【发布时间】:2015-09-28 11:23:31
【问题描述】:
我用 Java swing 库构建了一个计算器。除了 actionEvent 循环中的乘法和除法运算符外,其他一切都有效。所有其他 Operator 都可以正常工作。
这是发生错误: 我已经在这部分代码上尝试了一个 try 语句
计算器:
计算器乘法错误:
首先输入数字
然后你按下操作符,这应该是清除文本字段 - 这一步发生错误
然后你输入第二个数字
然后按=键输出答案
错误图片:
if(e.equals("*"))
{
fnum = txt.getText();
logic.setTotal(fnum);
op = "*";
txt.setText(""); // error occurs here, textfield isn't cleared
JOptionPane.showMessageDialog(null, fnum); //messagebox to see if fnum contains the string from the textfield
}
if(e.equals("/"))
{
fnum = txt.getText();
op = "/";
txt.setText("");
}
ActionEvent 循环/函数:
public void actionPerformed(ActionEvent ea)
{
else if(op.equals("*"))
{
logic.setTotal(fnum);
logic.multiplication(snum);
total1 = logic.total;
}
else if(op.equals("/"))
{
logic.setTotal(fnum);
logic.divide(snum);
total1 = logic.total;
}
txt.setText(""+total1);
}
逻辑是内部类
内部类:
public class Inner extends Calculators{
public double total;
public Inner()
{
total = 0;
}
public void setTotal(String n)
{
total = convertToNumber(n);
}
public void divide(String n)
{
total /= convertToNumber(n);
}
public void multiplication(String n)
{
total *=convertToNumber(n);
}
}
如果您感到困惑,请索取更多代码,因为我无法包含所有代码。
【问题讨论】:
-
这让我很担心:
public class Inner extends Calculators{。为什么内部扩展计算器?这表明滥用继承权。否则,如果没有minimal example program,将很难回答您的问题。 -
内部类使用计算器方法和变量,因为它是计算器的“子类”。我无法添加所有代码,因为它非常广泛。
-
您看到了什么特别的错误?发生错误时的类代码会很有帮助。
-
"Inner class uses Calculator methods and variable. I need it to use the logic methods"-- 这不是继承的用途。如果它是一个内部类,那么它已经可以访问其外部类的变量和方法。我担心这里的设计问题。另一个问题,你在这里陈述:"ActionEvent Loop:"——但没有显示循环。也许你贴错了标签。 -
您最好按照上面的 Hovercraft 要求发布 MCVE。真的很难理解错误是什么,发生在哪里,在什么情况下发生,以及为什么我们不能自己运行和观察。而且您只给出了可能相关或不相关的程序的一小部分。