2014-12-15 10 views
-2

기본적으로 Integer 만 입력 할 수 있도록 유효성을 검사하려고합니다. 이것은 제가 지금 가지고있는 것입니다. 그러나 글자를 입력하면 switch을 통해 결과가 공백으로 남습니다.switch 문에서 .hasNextInt()

정수가 아닌 다른 값이 입력되면 스위치의 default으로 이동하기를 원합니다.

도움이 될 것입니다. 감사! 편지가 false로 당신의 while(loop && kb.hasNextInt())가 발생할 수 있기 때문에

while(loop && kb.hasNextInt()) 
{ 

    choice = kb.nextInt(); 
    switch(choice) 
    { 
    case 1 : 
      language = "FRENCH"; 
      loop = false; 
      break; 
    case 2 : 
      language = "GERMAN"; 
      loop = false; 
      break; 
    case 3 : 
      language = "SPANISH"; 
      loop = false; 
      break; 
    default : 
      System.out.println("That is not a correct choice. Please try again!"); 
      break; 

    } 
} 

답변

0

이다. if 문을 while 루프 내에 hasNextInt()과 함께 넣는 것이 좋습니다. 다음 .hasNextInt()false, 를 반환 할 것, 다음 입력이 정수가 아닌 경우

while(loop) 
{ 
    // validate int using while loop 
    while(!kb.hasNextInt())        
    { 
     System.out.println("you must enter a number! "); 
     kb.next(); 
    } 

    choice = kb.nextInt(); 

    switch(choice) 
    { 
    case 1 : 
      language = "FRENCH"; 
      loop = false; 
      break; 
    case 2 : 
      language = "GERMAN"; 
      loop = false; 
      break; 
    case 3 : 
      language = "SPANISH"; 
      loop = false; 
      break; 
    } 
} 

System.out.println("Thank You " + studentID + " you have been registered for " + language); 
+0

나는 늘 루프 그래서 어쩌면 내가 다른 while 루프를 넣을 것을 다음 while 루프에서 if 문을 넣어 경우

내가하는 일은 내가 입력을받을 어디 보통 주변의 유효성 검사를 넣어 것입니다 while 루프? 스위치 명령문을 여전히 사용하는 더 좋은 방법이 있습니까? – shallowtek

+0

주 WHILE LOOP 내에서 다른 WHILE LOOP을 사용하면 문제가 해결되지만 유효성 검사중인 데이터 유형이 SWITCH의 DEFAULT를 사용하고 있지 않음을 의미합니다. 별도의 S.O.P에 오류가 있다는 메시지가 있습니다. 오 잘 나는 그것이 효과가 있다고 생각한다. IF 진술서를 알려 주셔서 감사합니다. – shallowtek

1

:


예 (정말 수를 점점 시도하는 대신 if 문의 while 루프를 사용) 따라서 루프가 일찍 종료됩니다. 당신은, 텍스트 입력을 허용 여기에 응답하려면

는 당신은 라인으로 라인, 숫자 대신 텍스트, 를 읽고 Integer.parseInt 읽을 줄을 구문 분석 할 필요가있다. 행을 파싱 할 수없는 경우 NumberFormatException이 표시됩니다. 잡을 수 있고 적절하게 처리 할 수 ​​있습니다. 그동안도 실행 (숫자를) 사실로() kb.hasNextInt를 필요에 따라 사용자가 번호를 입력하지 않은 경우에도 시작하기 전에

while (loop && scanner.hasNextLine()) { 
     String line = scanner.nextLine(); 
     try { 
      choice = Integer.parseInt(line); 
     } catch (NumberFormatException e) { 
      System.out.println("That is not an integer. Please try again!"); 
      continue; 
     } 

     switch (choice) { 
      case 1: 
       language = "FRENCH"; 
       loop = false; 
       break; 
      case 2: 
       language = "GERMAN"; 
       loop = false; 
       break; 
      case 3: 
       language = "SPANISH"; 
       loop = false; 
       break; 
      default: 
       System.out.println("That is not a correct choice. Please try again!"); 
       break; 
     } 
    } 
0

이 코드는 날려 버리겠다.

int choice; 
Boolean retry = null; 
while(retry == null) { 
    try{ 
     String input = scanner.nextLine(); 
     choice = Integer.parseInt(input); 
     retry = false; 
    }catch(NumberFormatException e){ 
     System.out.println("Please enter a number from 1 to 4."); 
    } 
} 

switch(choice){ 
    case 1: 
     // Do stuff 
     break; 
    case 2: 
     // Do stuff 
     break; 
    case 3: 
     // Do stuff 
     break; 
    case 4: 
     // Do stuff 
     break; 
    default: 
     System.out.println("Something went wrong!"); 
} 
관련 문제