计算器为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);

回答:

由于gtrue,这部分永远不会执行:

else 

{

for(int a = 0; a<(b.length-s); a++)

{

num2.append(b[s]);

s++;

}

}

因此num2被从未填充过,并且你会得到异常ab试图解析一个空字符串。

以上是 计算器为Java中的计算方法生成空字符串错误 的全部内容, 来源链接: utcz.com/qa/258905.html

回到顶部