我正在开发一个程序,该程序将给定的字符串作为给定 x 值的数学函数进行评估。我目前遇到如下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "-Infinity3"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at function.operateMD(function.java:212)
at function.evaluate(function.java:39)
at Graph.draw(Graph.java:127)
at Graph.main(Graph.java:22)
我不确定为什么会收到此错误。发送到该方法的字符串是"3x-1"
我的代码基本上采用字符串,将其分解为一个索引的字符串,判断每个字符串的数学值(即运算符、变量等)并运行一系列方法来简化函数,然后在给定的情况下对其进行评估x 值。发生错误的方法(function.operateMD)在这里:
public static void operateMD()
{
double tempPROD=0;
double tempP1=0;
double tempP2=0;
for(int h=0;h<parts.size();h++)
{
if(types.get(h).equals("opr"))
{
tempP1=Double.parseDouble(parts.get(h-1));
tempP2=Double.parseDouble(parts.get(h+1));
if(parts.get(h).equals("*"))
{
tempPROD=tempP1*tempP2;
parts.remove(h+1);
parts.set(h-1, String.valueOf(tempPROD));
parts.remove(h);
types.remove(h+1);
types.set(h-1, "num");
types.remove(h);
}
else if(parts.get(h).equals("/"))
{
tempPROD=tempP1/tempP2;
parts.remove(h+1);
parts.set(h-1, String.valueOf(tempPROD));
parts.remove(h);
types.remove(h+1);
types.set(h-1, "num");
types.remove(h);
}
//end of if operator conditional
}
else if((h!=parts.size()-1)&&((types.get(h).equals("num"))&&types.get(h+1).equals("num")))
{
tempP1=Double.parseDouble(parts.get(h));
tempP2=Double.parseDouble(parts.get(h+1));
tempPROD=tempP1*tempP2;
parts.remove(h+1);
parts.set(h, String.valueOf(tempPROD));
types.remove(h+1);
types.set(h, "num");
}
//end loop to go through each part of arraylist
}
//end of method
}
请注意,“parts”是单索引字符串值的 Arraylist,“types”是每个“parts”数学值的 Arraylist。
这是我在这里发布的第一个编程问题,所以我希望我提供了足够的信息。