我一直在尝试在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)
答案 0 :(得分:0)
您需要删除"添加"从输入对话框中收到的字符串的末尾。
numberStr = numberStr.substring(0, numberStr.lastIndexOf("add"));
然后尝试解析此字符串中的double。
number = Double.parseDouble(numberStr);
请注意,如果用户在输入对话框中输入非数字字符串(例如234sdfsf5500add),您仍会得到该异常。但是,它可以正常输入(100add)。