java - 每次运行程序时出现NumberFormatException错误如何解决?

标签 java numberformatexception

我必须为我的计算机科学课创建一个爱情计算器对象。 但是,每次编译并运行该程序时,我都会遇到错误:

java.lang.NumberFormatException:

对于输入字符串:“70.78%”(以 sun.misc.FloatingDecimal 表示)

我的方法代码:

public double calculate()
{
    double value1;
    double value2;
    double sqrt1;
    double sqrt2;
    double relationship;
    sqrt1 = Math.sqrt(name1.length());
    sqrt2 = Math.sqrt(name2.length());
    value1 = (Math.pow(name1.length(), 3)/(Math.random()+0.1))* sqrt1;
    value2 = (Math.pow(name2.length(), 3)/(Math.random()+0.1))* sqrt2;

    if(value1 > value2)
    {
        relationship = value2 / value1;
    }
    else
    {
        relationship = value1 / value2;
    }
    NumberFormat nf = NumberFormat.getPercentInstance();
    nf.setMinimumFractionDigits(2);
    return Double.parseDouble(nf.format(relationship));
}

我尝试将其转换为 float 。我尝试通过声明和初始化另一个双变量并返回它来分离它,但它们不起作用。我查找了解决方案,大多数人说使用 try and catch,但我不明白它是如何工作的(因为我刚刚开始上课并且是初学者)。

在这种情况下我该如何使用 try and catch ?

最佳答案

NumberFormat 旨在创建人类可读的字符串。 70.78% 不是一个数字70.78 是,但加上百分号,它是一个字符串。看来您想要做的是使用数字格式化功能对数字进行四舍五入。 This question对于如何正确舍入数字并将其保留为数字有一些建议。

要回答您的其他问题,使用 try/catch 的正确方法如下:

 double result;
 try{
   result = Double.parseDouble(nf.format(relationship));
 }catch(NumberFormatException e){
   e.printStackTrace();
   result = 0.0;
 }
 return result;

但唯一能做的就是让您的程序不崩溃,并且您始终会从 calculate() 方法返回 0.0。相反,您需要修复异常的

关于java - 每次运行程序时出现NumberFormatException错误如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856993/

相关文章:

java - Tomcat启动时实例化对象

java - 在 dcm4che 中运行 dcmqrscp 的示例命令,找不到什么文件?

java - 为什么返回当前对象的引用并不总是返回相同的引用?

java - 如何将 double 更改为字符串

java - 2 个文本字段 java 的 NumberFormatException

java - 如何使用 Java 8 Streams 并行处理列表中的元素以对它们进行求和

java - 在 iText 7 中附加 2 个表格

java - 将音程转换为音符的方法,遇到 NumberFormatException

Java - Try/Catch NumberFormatException 使用以前的值?

java - NumberFormatException 错误(parseInt)