获取算术异常以处理乘以零

时间:2012-11-26 12:24:29

标签: java exception math

对于家庭作业,我必须创建一个简单的程序,它将两个数字作为参数,并将它们相乘。如果其中一个数字为零,则程序抛出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

6 个答案:

答案 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);
            }



    }

}