티스토리 뷰

728x90
반응형

[8-7] 다음은 1~100사이의 숫자를 맞추는 게임을 실행하던 도중에 숫자가 아닌 영문자를 넣어서 발생한 예외이다. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 보완하라.

public class Ex8_7 {
	public static void main(String[] args) {

	int answer = (int) (Math.random()*100)+1;
	int input =0;
	int count =0;
	
	
	do { 
		count++; 
		System.out.println("1과 100사이의 값을 입력해라");
	
		input = new Scanner(System.in).nextInt();
        
        
		if(answer > input) {
			System.out.println("더 큰수를 입력해라 : "+input);
		} else if (answer < input) {
			System.out.println("더 작은수를 입력해라 : "+input);
		} else {
			System.out.println("맞췄다");
			System.out.println("시도횟수는"+count+"번이다");
			break;
		}
	} while(true);
	
  }

}

풀이

1) try-catch문으로 예외 처리

		try {
		input = new Scanner(System.in).nextInt();}
	 catch (Exception e) {
		System.out.println("글자말고 숫자로 다시 입력해라");
		continue; //중요!
		}

 

정답
package pkg1;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Ex8_7 {
	public static void main(String[] args) {

	int answer = (int) (Math.random()*100)+1;
	int input =0;
	int count =0;
	
	do { 
		count++; 
		System.out.println("1과 100사이의 값을 입력해라");
	
		try {
//		Scanner sc = new Scanner(System.in);
//		input = sc.nextInt(); } // 이렇게도 가능
		input = new Scanner(System.in).nextInt();}
	 catch (InputMismatchException e) { //Exception e 도 가능
				System.out.println("글자말고 숫자로 다시 입력해라");
				continue; //중요!
			} 
		if(answer > input) {
			System.out.println("더 큰수를 입력해라 : "+input);
		} else if (answer < input) {
			System.out.println("더 작은수를 입력해라 : "+input);
		} else {
			System.out.println("맞췄다");
			System.out.println("시도횟수는"+count+"번이다");
			break;
		}
	} while(true);
  }
}
728x90
반응형
댓글
250x250
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday