반나
50
2021-04-18 16:24:01
4
140

안녕하십니까 예외처리 방법좀 여쭤보고싶습니다.


정말 별거아닌 가위바위보 문제입니다.

그런데 문자열이 아닌 정수를 입력받았을때 

"문자열을 입력하세요" 라고 출력하고싶은데 어떻게해야되는지 모르겠습니다ㅜ

Scanner scan=new Scanner(System.in);
	      String str[]= {"가위","바위","보"};
	      String user,com;
	      System.out.println("컴퓨터와 가위 바위 보 게임을 합니다.");
	      do {
	            System.out.println("가위 바위 보 : ");
	            try {
	               user=scan.nextLine();
	               if(user.equals("그만")) {
	                  break;   
	               }
	               int n=(int)(Math.random()*3);
	               com=str[n];
	               if(user.equals("가위")) {
	                  if(str[n].equals("가위")) {
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 비겼습니다.");
	                  }
	                  else if(str[n].equals("보")){
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 유저 승리.");
	                  }
	                  else if(str[n].equals("바위")) {
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 유저 패배.");
	                  }
	               }
	               if(user.equals("바위")) {
	                  if(str[n].equals("바위")) {
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 비겼습니다.");
	                  }
	                  else if(str[n].equals("가위")){
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 유저 승리.");
	                  }
	                  else if(str[n].equals("보")) {
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 유저 패배.");
	                  }
	               }
	               if(user.equals("보")) {
	                  if(str[n].equals("")) {
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 비겼습니다.");
	                  }
	                  else if(str[n].equals("바위")){
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 유저 승리.");
	                  }
	                  else if(str[n].equals("가위")) {
	                     System.out.println("사용자 = "+user+" , 컴퓨터 = "+com+" 유저 패배.");
	                  }
	               }
	            } catch(NumberFormatException e) {
	               System.out.println("문자열 형태로 입력하세요");
	  
0
  • 답변 4

  • 공부는 습관
    726
    2021-04-18 16:56:37

    if로 모든 경우의 수를 검사하기 보단 else if로 그만, 가위, 바위, 보 중 한 가지가 true를 반환할 경우 해당 로직을 실행하는 방법이 더 적절할 것 같구요, 사용자가 유효하지 않은 값을 입력했을 경우 마지막 else에서 네 가지중 한 가지로 입력을 유도하는 방법이 좋아보입니다.

  • 반나
    50
    2021-04-18 17:19:11

    공부는 습관

    굳이 꼭 NumberFormatException 이나 InputMismatchException 을 사용해야한다면 어떻게 접근해야할까요?? 과제조건중에 예외처리를 통해 안전하게 실행하라고 되어있어서...

  • 비전공자취업
    127
    2021-04-18 18:48:27

    예외처리를 통해 안전하게 실행하라는게 nextline()쪽만 묶어서 나누지말고 Exception으로만 처리하고,

    가위 바위 보 또는 그만이 아닐경우에는 잘못 입력하였습니다. 라는 문구 출력후 break로 빠져나오게 

    만드는건 안되는건가요?

  • 반나
    50
    2021-04-18 19:46:15

    비전공자취업

    하다가 머리도너무 아프고 답도 도저히 모르겠어서 일단 그런식으로 해서 제출했습니다 점수는 교수님이 판단하시겠죠ㅜ

  • 로그인을 하시면 답변을 등록할 수 있습니다.