2014-10-07 3 views
0

catch 블록을 실행하려고하지만 식별자가 필요하다고 계속 말합니다. 어떤 도움이라도 환영받을 것입니다. 이 메서드의 목적 (그것은 내가 테스트 할 수있는 메인에있다)은 정수에 유효한 값을 얻는 것이다. 값이 유효하지 않으면 유효한 숫자가 입력 될 때까지 반복되어야합니다. 나는 while 루프와 try ... catch를 사용하여 예외를 수정하려고 시도했다. 당신은 catch 문에서 NumberFormatException의 이름 (식별자)를 정의하지 않습니다try catch 블록에서 식별자가 필요합니다.

import javax.swing.JOptionPane; 
import java.lang.Integer; 

public class test 
{ 
    public static void main (String[] args) throws NumberFormatException 
    { 
     String input; 
     boolean x = false; 
     int number; 

     input = JOptionPane.showInputDialog("Enter an integer: ");  //creates input box for user to enter integer value 
     number = Integer.parseInt(input); 

     try 
     { 
      while (number < -2147483648 && number > 2147483647) 
     { 
      x = false; 
      number = Integer.parseInt(input); 
      System.out.println("You selected: " + number) 
     } 

     } 

     catch (NumberFormatException e) 
     { 
      input = JOptionPane.showInputDialog("Enter a valid integer: "); 
     } 


    } 

} 

답변

2

주셔서 감사합니다.

당신이 필요합니다

catch (NumberFormatException e) 
{ 
    ... 
} 
+0

이 답변을 주셔서 감사합니다. 그러나 지금은 코드가 뒤죽박죽이고 내가 기대했던 것처럼 컴파일되지 않습니다. 내가 할 수있는 어떤 힌트/제안? (나는 대답을 철저히 말할 필요는 없지만 도움을 청합니다.) –

+0

나는 당신이 무엇을 의미하는지 완전히 모릅니다. 코드가 어떻게 뒤죽박죽입니까? 당신이 게시 한 것은 뒤죽박죽이되어 보입니다. 그리고 코드가 컴파일되거나 컴파일되지 않습니다. 네가 기대했던대로 행동하지 않는다는 것을 의미합니까? – dursk

+0

네, 그 말을 더 잘 표현할 수 있습니다. -2147483648보다 큰 값과 2147483647보다 작은 값을 입력하면 루프가 시작됩니다. 어느 것이 내가 원했던 것의 반대입니다. 둘째로 유효하지 않아야하는 번호를 입력하면 예외 오류가 발생합니다. –

0

당신의 번호 문제에 대해서 : 수 < -2147483648 & & 번호> 2147483647 사람들은 그래서 아마도 도움이 될 것입니다 롱 타입 대신 INT의를 사용하여 정수의 최소 및 최대 값이다 .

+0

우리 교수가 정수의 최소 및 최대 범위를 사용하기를 원했지만, 포괄적 인 것은 아니므로 데이터가 여전히 int로 확인되지 않습니까? –

관련 문제