2013-03-25 2 views
1

문자열 userAge;휴식; 회선 도달 불가능

while(true){ 
     System.out.println("Enter user Age"); 
     userAge = scInput.nextLine(); 
      if(tryParseInt(userAge)){ 
      return userInfo[row][1] = userAge; 
      break; 
      }else{ 
       System.out.println("Please Enter an integer."); 
       } 
    } 

여기에서 초보자는 Reagan입니다.

내 문제는 내 코드가 "break;"때문에 컴파일되지 않는다는 것입니다. 도달 할 수없는 코드라고합니다. 내가 뭔가 잘못하고있는 것 같아요. 변수 타입과 관련이 있습니다. 확실하지 않습니다. 이것은 사용자 연령을 요구하는 메소드에서 가져온 것입니다.

목표는 tryParseInt() 메서드를 통해 문자열을 전달하여 입력 데이터가 정수인지 확인하고 문자열 유형 변수로 유지하는 것입니다.

사용자의 데이터를 저장하기 위해 다차원 문자열 배열을 만들고 있습니다. 나는. 이름; 나이; 위치.

답변

10

break 진술 break 진술에 도달하기 전에 함수가 종료되기 때문에 문이 도달 할 수 없습니다. break;을 제거하면 코드를 컴파일해야합니다.

+0

휴식을 제거했습니다. 코드는 실행되지만 내 조건을 테스트하기 전에 전체 루프를 실행합니다. 이상하게도 조건이 거짓 인 경우 else 문을 표시하고 싶습니다. –

+0

조건을 다시 반복하려면 루프에서 return 또는 break 문을 사용하지 마십시오. 그리고 다음에 프로그램에서 입력을 요청하면 문자를 입력하면 else 조건이 실행되는 것을 볼 수 있습니다. 그러나이 while 루프에서 break 나 return을 제거하면 루프가 무한 루프가됩니다! –

0
while(true){ 
     System.out.println("Enter user Age"); 
     userAge = scInput.nextLine(); 
      if(tryParseInt(userAge)){ 
      return userInfo[row][1] = userAge; 
      //you don't need break here because return at above line will make function to exit - break the loop 
      //break; 
      }else{ 
       System.out.println("Please Enter an integer."); 
       } 
    } 
0

심판하는 입력부 여부 정수 :

Scanner scanner = new Scanner(System.in); 
try { 
    userInfo[row][1] = scanner.nextInt()); 
    return; 
} catch (InputMismatchException e) { 
    System.out.println("Please enter a integer."); 
} 
finally{ 
    scanner.close(); 
} 

및 코드에서

는, 반환 문장 후에 문장을 깰 때문에 연결할 수 없습니다.