양의 정수값을 입력받아 거꾸로 반환하는 메소드

MIN.DI·2021년 5월 1일
1

TIL

목록 보기
7/15

문제

"양의 정수값 : "이라는 메시지를 출력하고, 입력된 값을 반환하는 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%10n/10while문의 조건을 더이상 충족하지 않으므로 루프를 탈출한다.

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()메소드에 추가했다.
사용자가 종료하기 전까지는 계속해서 값을 입력받을 수 있게 반복문으로 작성했다.

메모

  • 메소드에서 다른 메소드를 파라미터로 받을 수 있다.
  • 알고리즘 공부 더 할것!
profile
내가 보려고 쓰는 블로그

0개의 댓글