내가 좋아하는 푸라닭 후라이드 가격~
앞서 우리는 String 클래스의 다양한 메소드들을 보았습니다.
그럼 이 메소드들 그냥 지나갈 수 없죠 당연히 응용타임입니다.
배운 String 메소드를 사용하여 다음의 문제를 같이 풀어 봅시다 ㅎㅎ
문제 들어갑니다.
1. 사용자에게 숫자를 입력받습니다.
2. 입력 받은 숫자에 3 자리마다 , (쉼표)를 붙여 출력해주세요.
ex) 입력 : 123456789 -> 123,456,789
Hint!!
System.out.println("숫자를 입력해주세요.");
String sc = ScanUtil.nextLine();
String sum = "";
int count = 0;
for (int i = sc.length() -1; i >= 0; i--) {
sum = sc.charAt(i) + sum;
count++;
if(count % 3 == 0 && count != sc.length()){
sum = "," + sum;
}
}
System.out.println(sum);
- Scanner 를 이용하여 사용자에게 숫자를 입력 받습니다.
- 숫자를 거꾸로 저장하기 위해 for문을 입력받은 길이만큼 거꾸로 돌립니다.
-1 은 인덱스를 생각해보면 바로 이해할 수 있습니다.
- 숫자를 세어줄 count를 선언하고
- 거꾸로 돌아가는 for문의 i를 사용하여 뒤에서부터 문자를 한 자리씩 빼냅니다.
- 처음 빼내온 문자를 sum에 저장합니다.
- 만약 sum에 내용이 있다면 다음 문자 뒤에 붙여 줍니다.
- count를 증가시켜 주고
- 만약 count가 3 과 같거나 첫 자리는 , 를 빼야 하니 길이와 같지 않을 때
sum 사이사이에 " , " (쉼표)를 붙여줍니다.
public class main{
public static void main(String[] args){
int money = 100000000;
int interval = 3;
// int를 String으로
String change = String.valueOf(money);
// 쉼표가 존재할 수 없는 앞 부분의 개수
int noPoint = change.length() % interval;
if(noPoint == 0){
noPoint = interval;
}
String result = "";
for(int i = 0; i < change.length(); i++){
// noPoint를 쉼표 간격만큼 더해주며 , 를 +
if(i == noPoint){
result += ",";
noPoint += interval;
}
result += String.valueOf(change.charAt(i));
}
System.out.println(result);
}
}
DecimalFormat df = new DecimalFormat("###,###");
return String.valueOf(df.format(값));
쉽죠잉~? 다음에 또 다른 문제로 찾아올게요