2013-10-25 1 views
-2

내가 이렇게 할 때. 단순히 문자 또는 문자열을 입력하고 런타임 오류를 발생시키는 것을 사용자가 중단하는 방법을 파악하려고합니다. 여기 입력을 필터링하는 방법을하지 확신 : 당신이 char 또는 여기에 문자열을 입력하면두 번 물을 때 사용자가 문자열이나 char을 입력하는 것을 어떻게 중지합니까?

 System.out.println("Please enter the degree of difficulty" 
       + " for this dive"); 

     while(degreeOfDifficulty > 3.8 || degreeOfDifficulty < 1.2) 
     { 
      degreeOfDifficulty = scanner.nextDouble(); 
     } 

은 분명히 오류가 발생합니다. 도와주세요! 감사.

+0

을 다음과 같이

private boolean preventNonestring(String str) { Pattern p = Pattern.compile("[^a-z A-Z]"); return p.matcher(str).find(); } 

그런 다음 방법을 사용합니다. – Tinman

+0

자바 예외 처리를보십시오. 구글 "자바 : 예외 처리 방법". – Tinman

답변

0

while 루프에는 조건을 설정할 수 있습니다. 가장 간단한 시도 사용하고

0

.

입력의 다음 토큰이 유효한 double인지 여부를 나타냅니다. 그런 다음 scanner.nextDouble()으로 가져 오거나 scanner.next()으로 토큰을 무시할 수 있습니다.

+0

또는 hasNextDouble()을 사용하여 – Anton

+0

을 확인하십시오. http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html의 문서를 참조하십시오. – Anton

2

사용 scanner.hasNextDouble() 대신 try...catch 잡을 것

boolean invalidInput = false; 
while(!invalidInput && (degreeOfDifficulty > 3.8 || degreeOfDifficulty < 1.2)) 
{ 

    try { 
     degreeOfDifficulty = scanner.nextDouble(); 
     invalidInput = false; 
    } catch (Exception e) { 
     System.out.println("Your entry was invalid, please enter a double."); 
     invalidInput = true; 
    } 
} 
0

이 하나가 도움이되었습니다. !!

다음과 같이 부울 mothod를 만듭니다. 질문은하지 매우 분명하다로 부결

if(preventNonestring(yourtext)){ 
//Do something here when true 
}else{ 
//Your error message here when false 

} 
관련 문제