"양의 정수값 : "이라는 메시지를 출력하고, 입력된 값을 반환하는 readPlusInt() 메소드와, 입력된 값을 거꾸로 반환하는 inverseNum() 메소드 작성.
0이나 음수가 입력되면 재 입력되도록 할 것.
양의 정수값 : -125
양의 정수값 : 0
양의 정수값 : 125
반대로 읽으면 521 입니다.
다시 시작하시겠습니까? <yes_1 / No_0> :
먼저 readPlusInt() 메소드를 작성한다.
static void readPlusInt(){
int n;
Scanner sc = new Scanner (System.in);
do{ // 0 이나 음수가 입력될 경우 재입력
System.out.print("양의 정수값 : ");
n = sc.nextInt();
} while (n <= 0);
inverseNum(n); //입력받은 값이 양수일 경우 inverseNum() 메소드 자동 호출
}
따로 인스턴스를 생성하지 않아도 함수를 호출할 수 있도록 static
으로 생성한다.
입력받은 n
값이 조건을 만족할 경우(=양수일 경우), n
을 파라미터로 하는 inversNum(n)
메소드를 자동 호출한다.
(readPlusInt()
의 결과값을 inverseNum(n)
의 파라미터로 넘기는 부분에서 한참 헤맴...)
static void inverseNum(int n) {
Scanner sc = new Scanner(System.in);
System.out.print("반대로 읽으면 ");
while (n >0) {
System.out.print(n%10); //n을 10으로 나눈 나머지 = 마지막 자리 숫자
n = n/10; //n의 자리수 줄여주기 (나머지는 버림되므로)
}
System.out.println("입니다.\n");
n % 10
로 마지막 자리 숫자만 출력한 후,
n = n/10
으로 마지막 자리수를 버리고 다시 루프를 돈다.
n
이 한자리 수가 되면 n%10
이 n/10
이 while문
의 조건을 더이상 충족하지 않으므로 루프를 탈출한다.
while(true) {
System.out.print("다시 시작하시겠습니까? <yes_1 / No_0> ");
int choice = sc.nextInt();
if (choice == 1) { // 1 입력하면 readPlusInt 메서드 다시 호출하고 반복문 탈출
readPlusInt();
break;
}
else if (choice == 0) { // 0 입력하면 종료 후 탈출
System.out.println("종료합니다.");
break;
}
else { // 1과 0 이외의 다른 숫자 입력했을 경우 다시 선택받기
System.out.println("잘못 입력하셨습니다.\n");
}
마지막으로 프로그램을 다시 시작할건지 물어보는 부분까지 inverseNum()
메소드에 추가했다.
사용자가 종료하기 전까지는 계속해서 값을 입력받을 수 있게 반복문으로 작성했다.