为什么这个程序的输出在这个Java程序中显示为0?
下面的程序1在输出中显示0。我想这是因为我有返回C。 但为什么在第二个程序中不显示0 请解释返回声明何时出现在图片中。 谢谢你的支持 方案1:为什么这个程序的输出在这个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
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:
我刚刚改变了intc=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