2014-11-16 2 views
-1
boolean validator = true; 
    int userMembers = 0; 

    while(userMembers > 8 || userMembers < 1) 
    { 

     while(validator) 
     { 
      try 
      { 
       System.out.println("How many members of the band? "); 
       userMembers = input.nextInt(); 
       validator = false; 
      } 
      catch(InputMismatchException e) 
      { 
       System.out.println("Please user proper syntax"); 


      } 
     } 

     validator = true; 
    } 

이것은 지난 몇 시간 동안의 문제입니다. 내가하는 일과 상관없이 while 루프가 실제로 두 번 이상 userMembers = input.nextInt();에 요청할 수는 없습니다. 무한 루프에서 실행됩니다. 정수 이외의 것을 입력하면 이런 일이 발생합니다. 누군가가 이것이 왜 작동하지 않는지 또는 복잡한 해결책이 아닌 이유를 설명해 주시겠습니까?정수 데이터 유효성 검사의 무한 루프

+1

코드가 어떻게 실행되고 있는지 더 잘 이해하려면 IDE에서 중단 점을 추가하고 코드를 단계별로 실행 해 보았습니까? 이것은 문제가있는 곳을 지적해야합니다. –

답변

2

catch 블록에 input.nextLine();을 추가하여 현재 입력 라인의 나머지 부분을 사용합니다.

+0

솔루션이 너무 간단하다는 것을 믿을 수 없습니다. 나는 지금 몇 시간 동안이 문제에 빠져 있었다. 감사합니다 :) –