Java 中if判断分母为0时出现的奇怪错误

package com.my.shiyan9_2;

public class Text {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        UseCompute u1 = new UseCompute();
        Compute com = new add();
        u1.useCom(com, 5, 6);
        u1.useCom(new sub(), 5, 6);
        u1.useCom(new mul(), 5, 6);
        u1.useCom(new div(), 5, 6);
        u1.useCom(new div(), 9, 3);

    }

}
interface Compute{
    public int computer(int n,int m);
}
//加法
class add implements Compute{

    @Override
    public int computer(int n,int m) {
        System.out.print("加法:\n n+m = ");
        // TODO 自动生成的方法存根
        return n+m;
    }

}
//减法
class sub implements Compute{
    @Override
    public int computer(int n, int m) {
        System.out.print("减法:\n n-m = ");
        return n-m;
    }    
}
//乘法
class mul implements Compute{
    @Override
    public int computer(int n, int m) {
        System.out.print("乘法:\n n×m = ");
        return n*m;
    }
}
//除法
class div implements Compute{
    @Override
    public int computer(int n, int m) {
        if(m!=0) {
            System.out.print("除法:\n n÷m = ");
            return n/m;
        }else {
            System.out.print("分母不能为零!");
            return 0 ;
        }
    }
}
class UseCompute{
    public void useCom(Compute com, int one, int two) {
        System.out.println(com.computer(one, two));
    }
}

 

为什么输出时当除法if判断分母为零时“   System.out.print("分母不能为零!");”这个语句不输出,其次就是为什么已经判断分母为零了这句“   System.out.print("除法:\n n÷m = ");”还会输出?求大神赐教。

你的参数分母是6,不是0啊
    u1.useCom(new div(), 5, 6);
只是计算结果是0
 

你只是 n/m 的结果是0。但是你的除数不是 0。所以不会输出

n/m=0,不等于是分母为0,分母为0时,程序会抛出分母不能为0的异常,最好对除法做一个异常处理。

是的,从一个是结果为零,一个是分母为6 int除法就是 被除数 小于 除数,那么结果就是零

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y