我一直在尝试在java中编写一个sentinal控制的while循环来添加数字,这些数字将被用户作为输入。当用户输入"add“时,循环必须结束。
下面给出了代码,代码没有显示任何编译错误,但有一个运行时错误。我想知道我做错了什么。
谢谢
// 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)发布于 2017-09-21 02:01:54
您需要删除从输入对话框收到的字符串末尾的"add“。
numberStr = numberStr.substring(0, numberStr.lastIndexOf("add"));
然后尝试从这个字符串中解析出double。
number = Double.parseDouble(numberStr);
请注意,如果用户在输入对话框中输入非数字字符串(例如234sdfsf5500add),您仍将获得该异常。但是,对于正常输入(100add),它将工作得很好。
https://stackoverflow.com/questions/46328026
复制相似问题