2014-10-07 54 views
0

我想运行一个catch块,但它一直说预计标识符。任何帮助将受到欢迎。这个方法的对象(它是一个主要的,所以我可以测试它)是获得一个整数的有效值。如果该值无效,则应循环直到输入有效数字。我试图用while循环来做这件事,然后try ... catch来修复任何异常。谢谢尝试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定义的名称(标识)。

您需要:

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

这回答了这个问题非常感谢。但是现在代码仍然混乱,并不像我希望的那样编译。任何提示/建议对我来说? (我不需要直接的答案,但帮助表示赞赏) – 2014-10-07 01:12:49

+0

我不完全确定你的意思。代码混乱了吗?你发布的内容看起来并不混乱。代码要么编译,要么不编译。你的意思是它不符合你的期望? – dursk 2014-10-07 01:16:00

+0

是的,这是更好的措辞。当我输入一个大于-2147483648的值和一个小于2147483647的数字时,我进入循环。这与我想要的相反。其次,当我输入一个不应该有效的数字时,我会遇到异常错误。 – 2014-10-07 01:36:26

0

关于你的号码问题: 数< -2147483648 & &号> 2147483647 这些都是整数的最小值和最大值,那么也许使用长型的,而不是INT将帮助。

+0

我的教授希望我们使用整数的最小值和最大值范围,但它们并不包含在内,所以数据仍然不会像int那样正常吗? – 2014-10-07 02:14:54