Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个程序的输出在这个Java程序中显示为0?_Java - Fatal编程技术网

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

为什么这个程序的输出在这个Java程序中显示为0?,java,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 divi

下面的程序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)

方案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;
        }
    }

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

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


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

在第一个程序中,存在一个异常,因此变量c的值不会改变,因此当您用0初始化它时,它返回0。
在第二个程序中没有异常,因此C的结果是4/2,即2,因此现在2作为C的值返回。

程序2: 您的方法不返回
c=0因为有了这个:

   c=a/b; // according to your values return 2
将新值赋给
c
,在java中,变量取赋给它的最后一个值

程序3: 您得到
0
有两个原因:
首先,您有一个错误,因为您将一个正的
int>0
除以
0


第二,返回b是
0
,因为b有来自方法参数的输入值
0

在程序的第一个版本中,除法的除数是
0
。在数学术语中,除0是未定义的,因此抛出一个。变量
c
没有被分配新的值,因此在返回它时,它仍然显示初始值
0
。有关除以
0
(整数)和
0.0
(双精度)的比较,请参阅

这是执行语句时的语句流:

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
,因此,没有例外。

你能解释一下为什么我在第三个程序中得到0吗?我没有初始化c=0。在您的第三个程序中,由于算术异常,您得到了0,因为当异常发生时,0从divide方法try块返回到变量c中。您能解释一下为什么我在第三个程序中得到了0吗?我没有初始化c=0。在第三个程序中,您遇到了与第一个程序相同的问题,即
算术异常。因此,您不会在
返回c
时返回,而是在使用
返回b
的catch块之后返回,返回值为0。您能解释一下为什么我在第三个程序中得到0吗?我没有初始化c=0这可能是因为您正在设置int c=divide(4,0),其中4是a的值,0是b的值。当您返回b时,它将返回0。c也是0,因为4除以0等于0。
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