java计算器的除数不能为零实现 出现了一点小问题 求指导

private void calute (Float f){
float a1=Float.parseFloat(result);//第一个操作数
float a3=a1;//最终结果
if(flag1){
if(lastcommand.equals("+"))
a3=a1+f;
else if(lastcommand.equals("-"))
a3=a1-f;
else if(lastcommand.equals("*"))
a3=a1*f;
else if(lastcommand.equals("/"))
{

if (f==0)
textField.setText("除数不能为零");
else
a3=a1/f;

}
else if(lastcommand.equals("="))
a3=f;
flag1=false;
}
if(Math.floor(a3)==a3){
textField.setText((int)a3+"");}
else {
textField.setText(a3+"");
}
start=true;
}
private class C_Action implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        start=false;
        result= "0";
        flag1=true;
        lastcommand ="=";
        textField.setText("");
    }

}

  我在除法运算符后面加了一个判定 当f==0的时候输出  除数不能为零  但是现在当点击的时候 它不会输出 除数不能为零  而是把被除数给输出了  比如 9/0  就会输出9  8/0就会输出8  好奇怪。。 初学者好多不懂的地方 求指导!谢谢!

4个回答

我想应该是你这里 if 逻辑不对
你这里没有输出“除数不能为零”
输出结果还是原来的数字
我猜想:如果,我说的是如果 这里除号被判断为 - 或者是 + 结果就是 你得到的结果 :9 /(-) 0 = 9 9 / (+) 0 = 9
可以猜测你的if中的逻辑在某方面不对 貌似根本就没有走到除号这里的判断

其实这种程序调试下可以了,一眼看不到的话就用用笨方法也可以(我一直就想这么做) 这个就是所谓 控制台输出调试(自己封的、、、) :
你认为有问题的地方都增加输出变量值 每个 if 都加个 输出其中的变量值 你就可以看到了
当然 你也可以用awt中的界面输出也可以

我就能想到这么多

你的嵌套逻辑有问题,你调试下看看

认真调试一下,这样有助于理解程序的执行过程,也有助于学习

保持队形吧,既然大家的建议都是自己调试。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问