对于家庭作业,我必须创建一个简单的程序,它将两个数字作为参数,并将它们相乘。如果其中一个数字为零,则程序抛出ArithmeticException
当我阅读文档时,我总是觉得AritmeticException只处理除零错误和其他数学不可能的事情。但是,赋值需要这个内置处理程序来完成工作,那么如何让它接受乘以零作为错误呢?
到目前为止我的代码(编码为仅处理除以零和其他“标准”数学错误)
public class MultTwo {
public static void main(String[] args) {
try {
int firstNum = Integer.parseInt(args[0]);
int secondNum = Integer.parseInt(args[1]);
System.out.println(firstNum*secondNum);
}
catch (ArithmeticException a) {
System.out.println("You're multplying by zero!");
}
}//end main
}//end MultTwo Class
答案 0 :(得分:4)
怎么样?
if (firstNum == 0 || secondNum == 0) {
throw new ArithmeticException("You're multplying by zero!");
}
虽然这不是一个好习惯,但我想你的老师想要用它向你展示一些东西。
答案 1 :(得分:3)
正如您所知,在这种情况下不会自动抛出该异常,因此您需要自己抛出它:
if (firstNum == 0 || secondNum == 0) {
throw new ArithmeticException("Numbers can't be null");
}
//continue with the rest of your code.
注意:
ArithmeticException
NumberFormatException
。答案 2 :(得分:3)
我知道你应该抛出异常,而不是处理它。类似的东西:
int multiply(int firstNum, int secondNum)
{
if(firstNum == 0 || secondNum == 0)
throw new ArithmeticException("Multplying by zero!");
return firstNum * secondNum;
}
答案 3 :(得分:1)
jvm永远不会抛出ArithmeticException
将任何数字乘以零,你必须明确抛出它。
你可以这样做:
try {
int firstNum = Integer.parseInt(args[0]);
int secondNum = Integer.parseInt(args[1]);
if(firstNum == 0 || secondNum == 0){
throw new ArithmeticException();
}
else{
System.out.println(firstNum*secondNum);
}
}
catch (ArithmeticException a) {
System.out.println("You're multplying by zero!");
}
答案 4 :(得分:1)
算术系统永远不会抛出异常乘以零,因为那是完全有效的,例如
double res = 3.141 * 0.0;
给出0.0。
相反,你需要检测零,如果你有这样的话就扔掉。
if (res == 0.0) {
throw new ArithmeticException("You have a zero");
}
您可以检查任一输入是否为零。您可以将结果检查为零,因为(理论上)如果一个或两个输入为零,则只能获得零输出。但是,Java无法以极小的精度存储数字,而两个非常小的输入可能会产生零。 e.g。
Double.MIN_NORMAL * Double.MIN_NORMAL
给我0.0
上述部分不适用于Integers
,因此您可以检查该情景中的结果。
答案 5 :(得分:0)
试试这个...................
import java.util.Scanner;
public class T {
public static void main(String[] args) {
int firstNum = new Scanner(System.in).nextInt();
int secondNum = new Scanner(System.in).nextInt();
if (firstNum == 0 || secondNum == 0) {
throw new ArithmeticException("Numbers can't be zero");
}
else{
System.out.println(firstNum*secondNum);
}
}
}