为什么此程序的输出在此Java程序中显示为0?

时间:2016-01-31 07:43:38

标签: java

下面的程序1在输出中显示0。我认为这是因为我已经回归C. 但是为什么它不会在第二个程序中显示0。

请说明退货声明何时出现。 谢谢你的支持。

计划1:

public class Division {
    public static void main(String[] args) throws Exception {
        int c=divide(4,0); 
        System.out.println(c);
    }

    public static int divide(int a, int b) {
        int c = 0;
        try {
            c=a/b;
        } catch (Throwable f) {
            System.out.println("Error");
        }
        return c; //Why is the output shows 0. 
        }
    }
}

计划2: 我刚刚更改了int c=divide(4,2);

public class Division {
    public static void main(String[] args) throws Exception {
        int c=divide(4,2);
        System.out.println(c);
    }

    public static int divide(int a, int b){
        int c = 0;
        try {
            c=a/b;
        } catch (Throwable f) {
            System.out.println("Error");
        }
        return c; //Why is the output does not shows 0. 
    }
}

计划3: 为什么我在这个项目中获得0分?

public class Division {

    public static void main(String[] args) throws Exception {
        int c=divide(4,0); 
        System.out.println(c);
    }

    public static int divide(int a, int b) {

        try {
        int c=a/b;
            return c; 
        } catch (Throwable f) {
            System.out.println("Error");
        }
        //Why is the output shows 0. 
        return b;
        }
    }

4 个答案:

答案 0 :(得分:0)

这是因为你设置c = a / b。您的返回值为2。

在第一个程序中,您将4除以0,这使得c = 0。

在第二个程序中,你将4除以2,这使得c = 2。

答案 1 :(得分:0)

它在你的第一个程序中很简单,有一个例外,所以变量C的值不会改变,因此当你用0初始化时它返回0。 在你的第二个程序中没有例外,因此C的结果为4/2,即2,所以现在2作为C的值返回。

答案 2 :(得分:0)

计划2: 您的方法不会返回is,因为这样:

c=0;

c=a/b; // according to your values return 2 分配新值,在java中,变量取最后赋值给它。

计划3: 您得到c有两个原因:
首先,您有一个错误,因为您将积极0除以int > 0 其次,返回b为zero,因为b的方法参数输入值为zero

答案 3 :(得分:0)

在你编程的第一个版本中,你的除数为0。在数学术语中,除以0是未定义的,因此抛出ArithmeticException。变量c没有被赋予新值,因此当您返回它时,它仍然显示初始值0。有关除以0(整数)和0.0(加倍)的比较,请查看this forum post

这是执行语句的流程:

int c = 0; // initializing with 0
a/b; // division by 0 => ArithmeticException, no assignment
System.out.println("Error"); // println in the catch block
return c; // return initial value

在你的第二个程序中,除数是2因此,也不例外。