이번에는 양의 정수를 입력 받아 그 자릿수를 출력하는 프로그램을 작성해 보자. 예를 들어 3이 입력되면 1자리수 숫자이므로 1, 25가 입력되면 2, 7876이 입력되면 4를 출력해야 한다.
단,만약 정수가 아닌 문자가 입력 되었을 경우에는 다시 입력하라는 경고메세지를 보낸다.
우선 자리수 문제는 /나 %를 생각해 보면된다.
먼저 /를 해보면,
public class Problem3 {
public static void main(String[] args) {
int n = 25;
System.out.println(25 / 10); // 2 출력
}
}
25를 10으로 나누면 끝자리5가 제거되고 몫 2만 남는다.즉 10으로 나눌때마다 끝자리가 1개씩 제거된다는 것을 알수있습니다.
7876을 10으로 나누면? 6,7,8,7이 나올것이다 응? 이러면 4개? 4자리수?
594을 10으로 나누면? 5,9,4 3개.3자리수?
이생각이 들었다.
이렇게 되면 나눠질때마다 자리수+1을 하면 된다.하지만 이것을 종료를 시켜야하기 때문에 그것도 생각해보면 숫자가 0일때 종료하고 계속 반복하면 된다.
import java.util.InputMismatchException;
import java.util.Scanner;
public class Ex3 {
public int n;
public Ex3(int n) {
this.n = n;
}
public static int numberNum(int n){
int count=0; //count 변수 초기화;
while(true){
if(n == 0){
break;
}
n /= 10;
count++; //10으로나눈후 count +1;
}
return count;
}
public static void main(String[] args) throws InputMismatchException {
Scanner sc=new Scanner(System.in);
System.out.println("양의 정수를 입력하세요.");
try {
int number = sc.nextInt();
System.out.println("입력하신 정수의 자릿수는 : " + numberNum(number));
}catch(InputMismatchException e){
System.out.println("정수로만 입력하라고 했잖아요..");
}
}
}
여기서 간단하게 표시하려면 numberNum 메서드를 이렇게 나타내도 좋다.
public static int numberNum(int n){
String s = ""+n;
return s.length();