2012-03-20 3 views
-1

나는이 코드를 가지고 있고 while 회 돌이 안에 try-catch를 넣고 싶다. 논리는 "입력 오류가있는 동안 프로그램은 올바른 입력을 요구할 것입니다." 나는 어떻게 그럴 래? 미리 감사드립니다.while 루프에서 try-catch 방법?

+8

while 회 돌이는 어디에서 나옵니 까? 이렇게하면 a) 더 많은 정보를 얻을 수 있습니다. b) 귀하의 가정이 틀린 부분을 보여 주시고, 우리가 훨씬 더 직접적인 도움을 제공 할 수있게 해드릴 것입니다. c) 당신에 대한 존경심을 크게 높입니다. –

+0

이 질문에 대한 답을 쓰는 이유는 무엇입니까? OP가 먼저 질문을 명확히하도록하십시오. –

+0

당신 말이 맞아요. 죄송 해요. 고마워. 나는 자기 공부에만 능숙하지 않다. 다시, 나는 미안하다. – singko

답변

1

부울 플래그를 적절하게 바꿀 수 있습니다. 당신의 catch 블록 쓰기 여기 'continue;' :

1
boolean gotCorrect = false; 
while(!gotCorrect){ 
    try{ 
    //your logic 
    gotCorrect = true; 
    }catch(Exception e){ 
    continue; 
    } 

} 
0

아래

의사 코드는 내가과 키워드를 계속 틈을 이용해왔다.

while(true) { 
    try { 
     System.out.print("Enter your guess: "); 
     g = input.nextInt(); 
     if (g == a) { 

      System.out.println("**************"); 
      System.out.println("* YOU WON! *"); 
      System.out.println("**************"); 
      System.out.println("Thank you for playing!"); 

     } else if (g != a) { 
      System.out.println("Sorry, better luck next time!"); 
     } 
     break; 
    } catch (InputMismatchException e) { 
     System.err.println("Not a valid input. Error :" + e.getMessage()); 
     continue; 
    } 
} 
2

에서

bool promptUser = true; 
while(promptUser) 
{ 
    try 
    { 
     //Prompt user 
     //if valid set promptUser = false; 
    } 
    catch 
    { 
     //Do nothing, the loop will re-occur since promptUser is still true 
    } 
} 
+0

'break '는 잘못된 위치에 있지만 이것은 유효한 접근법입니다. – erickson

+0

@erickson 휴식 시간이 잘못된 위치에 있다고 말할 수 있습니까? –

+0

@erickson 감사합니다. –

1

당신은 try 블록의 마지막 행으로 break;을 추가 할 수 있습니다. 이렇게하면 모든 실행이 throw되면 제어가 break을 건너 뛰고 catch 블록으로 이동합니다. 그러나 예외가 발생하지 않으면 프로그램은 break 문으로 실행되어 while 루프를 종료합니다.

유일한 조건 인 경우 루프는 while(true) { ... }처럼 보입니다.

관련 문제