gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:37:34 25 4
gpt4 key购买 nike

好的,我正在用 Java 编写一个计算器,我输入了 String进入我的加法方法。我用 JButtons将文本写入 JTextField .

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

我计划为我将要使计算器能够进行的所有计算(加法、减法等)编写几种方法。然后我使用 .append将不是运算符的字符写入 StringBuffers 的方法,然后我把它变成字符串,后来, double 。然后我执行计算,并返回结果。

当我尝试使用计算器时,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永远不会填充,并且您会遇到尝试解析空字符串的异常。

关于java - 计算器为Java中的计算方法产生空字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com