首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sentinal While循环RTE

Sentinal While循环RTE
EN

Stack Overflow用户
提问于 2017-09-21 01:10:05
回答 1查看 60关注 0票数 0

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

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

谢谢

代码语言:javascript
复制
// 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);
    }
}

错误:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2017-09-21 02:01:54

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

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

然后尝试从这个字符串中解析出double。

number = Double.parseDouble(numberStr);

请注意,如果用户在输入对话框中输入非数字字符串(例如234sdfsf5500add),您仍将获得该异常。但是,对于正常输入(100add),它将工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46328026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档