计算器为Java中的计算方法生成空字符串错误

计算器为Java中的计算方法生成空字符串错误,java,swing,methods,jtextfield,calculator,Java,Swing,Methods,Jtextfield,Calculator,好的,我正在用Java编写一个计算器,我在加法中输入一个字符串。我使用JButtons将文本写入JTextField 当用户单击equals按钮时,我会找到他们想要执行的相对操作(如果他们单击运算符按钮,我会将int设置为特定的数字(因此加法是1))。我首先将字符串转换为字符数组,然后检查字符是数字还是运算符 我计划为我将使计算器能够进行的所有计算编写几个方法(加法、减法等)。然后,我使用.append方法将非运算符的字符写入StringBuffers,然后将其转换为字符串,然后再加倍。然后执行

好的,我正在用Java编写一个计算器,我在加法中输入一个
字符串。我使用
JButtons
将文本写入
JTextField

当用户单击equals按钮时,我会找到他们想要执行的相对操作(如果他们单击运算符按钮,我会将int设置为特定的数字(因此加法是1))。我首先将
字符串
转换为
字符
数组,然后检查字符是数字还是运算符

我计划为我将使计算器能够进行的所有计算编写几个方法(加法、减法等)。然后,我使用
.append
方法将非运算符的字符写入
StringBuffers
,然后将其转换为字符串,然后再加倍。然后执行计算,并返回结果

当我尝试使用计算器时,Eclipse会在我尝试将存放
StringBuffer
的字符串转换为
双精度
的行上报告
java.lang.NumberFormatException
。异常是由空的
字符串
引起的

有人能解释为什么会发生这种情况,并提供解决方案吗

以下是相关代码:

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;
    }

由于
g
true
,因此此部分从不执行:

    else
    {
        for(int a = 0; a<(b.length-s); a++)
        {
            num2.append(b[s]);
            s++;
        }
    }
else
{

对于(int a=0;适当的缩进对可读性有很大帮助…我编写了34+0的计算。c1保持34,c2清空了你!:)我现在没有时间2测试它,我将返回2 u TMRW我已经编写了程序,现在它运行良好(至少对于加法).4.谢谢你指出这个不可能的陈述-我不知道我为什么这么做:)@imulse:学习过程的所有部分。很高兴能帮助:)
    else
    {
        for(int a = 0; a<(b.length-s); a++)
        {
            num2.append(b[s]);
            s++;
        }
    }