当前位置: 首页 > 知识库问答 >
问题:

为什么我为输入字符串“∞”获得java.lang.NumberFormatException:?

翟俊茂
2023-03-14

情况是这样的。我正在根据从数据库获取的数据动态生成要在JPanel上显示的组件。系统会提示用户输入一个整数,并根据该整数进行一些计算。输出应以十进制值形式给出。因此,我将答案分配给了一个double,并使用decimalformat进行格式化。

当我将double值传递给DecimalFormat的format()方法时,即使我没有输入任何值为0,也会出现错误。

生成错误的代码段,

if (gbc.gridx == 1 && gbc.gridy == i + 1) {
                textConstraints.gridx = 1;
                textConstraints.gridy = i + 1;
                newPanel.add(new JLabel(((JTextField) component).getText()), textConstraints);
                int days = Integer.parseInt(((JTextField) component).getText().trim());
                System.out.println("add num of days");

                DecimalFormat df = new DecimalFormat("#.##");

                textConstraints.gridx = 3;
                double a=water / waterdays * days*1.0;
                double boarderWater = Double.valueOf(df.format(a));//error is given in this line
                newPanel.add(new JLabel(boarderWater + ""), textConstraints);
                continue;

            }

请考虑变量GBCTextConstraints是GridBagConstraints对象,Water是双变量,WaterDaysDays是int变量。

我的代码出了什么问题?

共有1个答案

傅元龙
2023-03-14

一个简单的解释:

当除法过程中分母为零时,就会出现此错误。

设置一个条件(使用if else),即分母的值不应等于零。

catch(异常e){//catch exceptions}

 类似资料:
  • 我在Linux中使用的Java版本是: OpenJDK版本“16.0.2”2021-07-20 OpenJDK运行时环境(构建16.0.2+7) OpenJDK 64位服务器VM(构建16.0.2+7,混合模式) 这是我从Head-First Java书中编译的代码: 为什么那个特殊字符(%)会出现在字符串的末尾,我如何编写代码来去掉它?

  • 问题内容: Oracle Java Community网站上的一篇文章提供了以下方法作为示例(对于JPA Converter,但这并不相关): 将String y强制转换为String val有什么用?有正当的理由吗? 原始文章:JPA的新增功能 问题答案: 这样的转换是完全没有必要的。我可以想象那是以前 但是后来参数类型更改为,而作者只是忘了删除强制类型转换。

  • 问题内容: 我有一个Android应用程序,我想检查安装的应用程序名称是否与传递给包含此代码的函数的字符串匹配。代码和示例如下: 假设您打过电话,并且手机上的应用程序名称与返回的名称相同。但是,它永远不会。我记录了结果,它应该匹配,但事实并非如此。任何人都可以请问我为什么这行不通吗? 问题答案: 使用String的equals()方法代替==运算符来比较字符串: 在Java中,新手遇到的最常见错误

  • 问题内容: 这让我感到很奇怪,我花了一段时间检查代码中的错误之后才发现这一点。 “将副本从数据库表或视图复制到文件。如果指定现有文件,则该文件将被覆盖。提取数据时,请注意bcp实用程序将空字符串表示为null,并将空字符串表示为空字符串。 ” (来自http://msdn.microsoft.com/en- us/library/ms162802.aspx ) 显然,这可以解决我的问题,但是有人可

  • 打印排列-字符串 给定一个字符串,查找并打印输入字符串的所有可能排列。注:排列顺序并不重要。只需将它们打印成不同的行即可。 样本输入: 美国广播公司 样本输出: abc acb bac bca驾驶室cba