Scanner
로 사용자에게 숫자를 받아
Integer.toString(value)
로 문자형으로 변환한 다음
하나하나 for문으로 돌리며 세어주는 방법
Scanner sc = new Scanner(System.in);
int count = 0, result;
String result1;
result = sc.nextInt() * sc.nextInt()* sc.nextInt();
result1 = Integer.toString(result);
// 숫자를 0~9까지 돌릴거다 i 범위 잡아주기
for (int i = 0; i < 10; i++) {
// result1 의 문자열 길이만큼만 돌리겠다 j 범위 잡아주기
for (int j = 0; j < result1.length(); j++) {
// result1의 한글자씩 똑 떼어서 i(에 저장된 수)와 비교해 같으면
// count의 값을 1씩 올려준다
if ((result1.charAt(j) - '0') == i) {
// 조건문에 -'0' 해주는 것은
// 아스키 코드로 하는 것이 아니라는 것을
//컴퓨터에게 표시해주는것
count++;
}
}
System.out.println(count);
// count 값 초기화
// 해주지 않으면 값이 누적된다.
count = 0;
}
charAt()을 쓸 경우 - '0' 또는 -48 을 해주어야 한다. 아스키코드에 대응하는 문자가 나올 수 있기 때문이다.
BufferedReader
로 사용자에게 숫자를 받아
Integer.parseInt(br.readLine())
를 이용해 형변환해 계산한 다음
String.valueOf(result)
사용해 다시 String형으로 바꿔 세어준다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
int[] arr = new int[10];
int result = Integer.parseInt(br.readLine())
* Integer.parseInt(br.readLine())
* Integer.parseInt(br.readLine());
String str = String.valueOf(result);
for (int i = 0; i < str.length(); i++) {
arr[(str.charAt(i) - '0')]++;
}
// 향상된 for 문
// arr 배열에서 하나씩 뽑아 v에 넣는다
for (int v : arr) {
System.out.println(v);
}
}
}
아래가 Scanner
를 사용했을 때, 위가 BufferedReader
를 사용했을 때이다. 시간적으로 BufferedReader 가 더 빠르다는 것을 확인할 수 있었다.