计算器为Java中的计算方法生成空字符串错误
好吧,我正在用Java编写计算器,并将String
输入到我的加法中。我用JButtons
将文字写入JTextField
。当用户点击等号按钮时,我发现他们想要执行的相对操作(如果他们点击一个操作符按钮,我将int设置为一个特定的数字(所以加1))。我首先将String
转换为char
数组,然后检查字符是数字还是操作符。计算器为Java中的计算方法生成空字符串错误
我打算为我计算机能够做的所有计算写下几种方法(伤害,减法等)。然后,我使用.append
方法将不是运算符的字符写入StringBuffers
,然后我将其转换为字符串,之后再加倍。然后我进行计算,并返回结果。
当我尝试使用计算器时,Eclipse会报告java.lang.NumberFormatException
,我尝试将保存StringBuffer
的字符串转换为double
。异常是由空的String
引起的。
任何人都可以解释为什么会发生这种情况,并提供解决方案吗?
下面是相关代码:
import java.awt.event.*; import javax.swing.*;
import java.awt.GridLayout;
public class Calculator2012 extends JFrame implements ActionListener{
public static double calculateAdd(String inputString)//this is my addition method
{
int s = 0;
boolean g = true;
StringBuffer num1 = new StringBuffer();
StringBuffer num2 = new StringBuffer();
char[] b = inputString.toCharArray();
int i = 0;
if(g==true)
{
for(int v = 0; v<b.length; v++)
{
if(b[i]!='+')
{
num1.append(b[i]);
}
else
{
g = false;
s = ++i;
break;
}
i++;
}
}
else
{
for(int a = 0; a<(b.length-s); a++)
{
num2.append(b[s]);
s++;
}
}
String c1 = num1.toString();
String c2 = num2.toString();
double x = Double.parseDouble(c1);
double y = Double.parseDouble(c2);//this is the error producing line
double z = x+y;
return z;
}
这是我的方法调用:
public void actionPerformed(ActionEvent e) {
//omitted irrelevant code
if(e.getSource()==equals)
{
s1 = tf1.getText();
s2 = " = ";
s3 = s1+s2;
tf1.setText(s3);
if(p==1)//p is my int that detects which operator to use
{
s1 = tf1.getText();
s2 = Double.toString(calculateAdd(s1));//I call the method here
s3 = s1+s2;
tf1.setText(s3);
回答:
由于g
是true
,这部分永远不会执行:
else {
for(int a = 0; a<(b.length-s); a++)
{
num2.append(b[s]);
s++;
}
}
因此num2
被从未填充过,并且你会得到异常ab试图解析一个空字符串。
以上是 计算器为Java中的计算方法生成空字符串错误 的全部内容, 来源链接: utcz.com/qa/258905.html