2014-09-01 3 views
-1

그래서 저는 학교용으로 작은 프로그램을 만들고 있습니다. 이전 과제에서는 프로그램이 충돌했을 때 프로그램이 완전히 중단되지 않도록 try catch finally 문을 작성해야했습니다. 그게 말이 되네요 ...While 문에서 중첩 된 catch catch 스캐너

이 작업에 대해 지금 요구하고있는 것은 아니지만 실제로이 작업을 수행하는 적절한 방법을 찾고 싶습니다. 지금까지 뭔가를 만들었습니다. 아래의 코드를 참조하십시오.

내 문제가 .. 마지막 스캐너의 입력에 기록 된 것을 기억하고, 그래서 누군가가 다시 while 루프의 세트를 충돌 뭔가를 쓸 때, 첫 번째 질문에 다시 대답 도착 사실과 거짓말

따라서 프로그램이 코드 상단으로 다시 돌아 가기 전에 스캐너를 "지우는"방법이 있는지 궁금합니다.

내가 전에 이것에 대해 질문을하는 사람들이 게시물을 발견했습니다, 그들은 "아니, 그건 불가능 ..."

에 가까운 답변을 얻을 것으로 보인다 그러나 나는이 문제를 해결하는 방법이있을 것 같아요?

나는이 내 자바 클래스의 숙제의 일부임을 내가 다시 언급 할 것이다, 그것이 내가 코드와 같은 .. 또한

를 설정 한 방법이 될 수도 있겠죠; 일종의, 핵심 프로그램 자체가 있지만,이 중 하나를 잡으려고 노력하고 특히 그것을 다시 시작하지 않습니다. 하지만 난 항상 사용자가 INT 상자에 "아니오"를 입력하여 프로그램을 충돌 할 때 :

Scanner keys = new Scanner(System.in) 
Boolean abc = true; 
String bucket; 
int numbers = 0; 

while(abc == true){ 
    abc = false; 
    try{ 
     System.out.println("do you like me?") 
     bucket = keys.nextLine(); *//user types in some string..* 

     if(bucket.equalsIgnoreCase("yes")){ 
      System.out.println("Yay! I love you too! :P"); 
     } 
     else if(bucket.equalsIgnoreCase("no")){ 
      System.out.println("awww.."); 
     } 

     System.out.println("How much money do you have on you?"); 
     numbers = keys.nextInt(); *//user types in **ex**. "no"* 
     System.out.println(numbers); 
    } 
    catch(Exception a){ 
     abc == true; 
    } 
    finally{ 
     if(abc == false){ 
      keys.close; 
     } 
    } 
} 

이 프로그램을 잡는다 //이에 대한 자세한 내용은 열망하고있어 while 루프를 시작한 다음 스캐너 변수에서이 값을 가져온 것이 없으므로 "no"라고 읽은 다음 "do you like me"라는 질문에 자동으로 응답합니다 .. 그래서 "else"가 없으면 예 또는 아니오, 그러면 자동 선택이 될 것입니다.

나는 정말로 너희들 (그리고 여자들?)이 somethi를 알기를 바랍니다. 또는이 문제를 해결할 수있는 논리에 중대한 결함이 있음을 확인하십시오.

이 문제를 조사하고 도와 주셔서 감사합니다. : D

또한 sidenote 질문; 왜 사람들이 Exception의 "이름"으로 "catch"(Exception e)와 "e"를 사용하는 경향이 있는지 알고 있습니까? :) 그냥 궁금해서 ..

편집 : 그래서 나는 String cleanup을 넣을 수 있다고 생각했다; 그런 다음 cleanUp = keys.nextString(); catch 블록에서 ..

새로운 질문이 즉시 생깁니다. 컴파일러가 사용되지 않은 cleanUp 값에 대해 경고 메시지를 표시해야합니까? :)

답변

1

당신은 == 진정한 ABC 필요하지 않고이 입력 될 때 당신은 단지 중 휴식하거나 만들 수 있습니다 할 수 있다면 그것은 거짓

while(abc){ 
    try{ 
     System.out.println("do you like me?") 
     bucket = keys.nextLine(); *//user types in some string..* 

     if(bucket.equals("yes")){ 
      System.out.println("Yay! I love you too! :P"); 
     } 
     else { 
      abc = false; 
     } 
     System.out.println("How much money do you have on you?"); 
     numbers = keys.nextInt(); *//user types in **ex**. "no"* 
     System.out.println(numbers); 
    } 
    catch(Exception a){ 
     abc == true; 
    } 
    finally{ 
     if(abc == false){ 
      keys.close; 
     } 
    } 
} 
같음
관련 문제