具有Swing选项的条件

时间:2014-01-06 09:24:48

标签: java swing loops nullpointerexception joptionpane

当我在Swing中按下CANCEL选项时,我得到NullPointerException

代码:

while(!input.equals(CANCEL_OPTION));

我收到的消息是它说的是不兼容的类型......

这是我的完整代码..

do
    {
    input=JOptionPane.showInputDialog("Enter a String.");


    for(int i =input.length()-1;i>=0;i--)
    {           
        result = result + (input.charAt(i));
        disp.append("\n").append(result);
    }       

    JOptionPane.showMessageDialog(null,input+"\n"+disp+"\n"+"\n"+result);
    input="";
    disp.setLength(0);
    result="";
    }
    while(!input.equals(CANCEL_OPTION));

错误代码或其他..

Exception in thread "main" java.lang.NullPointerException
at Reverse.main(Reverse.java:15)
Java Result: 1

4 个答案:

答案 0 :(得分:5)

作为JOptionPane.showInputDialog()州的javadoc

  

返回用户的输入,或null表示用户取消了输入

如果您希望用户输入内容。

do {
    input = JOptionPane.showInputDialog("Enter a String.");
} while (input == null); // user can't cancel

for (int i = input.length() - 1; i >= 0; i--) {
    result = result + (input.charAt(i));
    disp.append("\n").append(result);
}

....

答案 1 :(得分:0)

将您的do while换成简单的while。不同之处在于,do while会在达到测试条件之前运行一次。您的代码正在接收CANCEL_OPTIONnull,尝试使用它,然后测试它是否为null。您需要将测试开始。

示例

input=JOptionPane.showInputDialog("Enter a String.");

while(input != null) {
    // Your code here.
}

注意 :这将为用户提供取消选项。如果他们这样做,它将跳过处理用户输入。

答案 2 :(得分:0)

当您按下取消按钮时,JOptionPane不返回任何内容,因此您的输入等于null。并且您的代码已经输入了do scoop,当您的代码到达该行时:

for(int i =input.length()-1;i>=0;i--)

输入已为空。

我更喜欢在该行之后添加以下内容:

if(input == null) {
            break;
        }

答案 3 :(得分:0)

只需使用try catch语句..

try
    {
    do
    {
        //your codesss......
    }
    while(!input.equals(null));
    }
    catch(Exception ex)
    {
     ////code..
    }
希望它有所帮助。