Sentinal While Loop RTE

时间:2017-09-20 17:10:05

标签: java

我一直在尝试在java中编写一个sentinal控制的while循环来添加数字,这些数字被用户作为输入。循环必须在用户结束时结束 输入“添加”。

下面给出了代码,代码没有显示任何编译错误,但是存在运行时错误。我想知道我做了什么错误。

谢谢

// Sentinal while is used if we dont know how many numbers we are going to add

import javax.swing.JOptionPane; 

public class sentinalWhile {

    public static void main(String[] args)
    {
        String numberStr;
        double number,total=0;
        final String SENTINAL = "add";
        numberStr = JOptionPane.showInputDialog("Enter a number to add (press add to quit):");
        number = Double.parseDouble(numberStr);
        while(numberStr.compareTo(SENTINAL)!=0)
        {
            total += number ;
            numberStr = JOptionPane.showInputDialog("Enter a number to add(-999 to quit)");
            number = Double.parseDouble(numberStr);

        }
        JOptionPane.showMessageDialog(null, "The total is:"+" "+total);
        System.exit(0);
    }
}

错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "add"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
    at sentinalWhile.main(sentinalWhile.java:11)

1 个答案:

答案 0 :(得分:0)

您需要删除"添加"从输入对话框中收到的字符串的末尾。

numberStr = numberStr.substring(0, numberStr.lastIndexOf("add"));

然后尝试解析此字符串中的double。

number = Double.parseDouble(numberStr);

请注意,如果用户在输入对话框中输入非数字字符串(例如234sdfsf5500add),您仍会得到该异常。但是,它可以正常输入(100add)。