0

当我输入 3,0,3.14,0 时,我收到错误消息。似乎我在第 26,27 和 31 行中跳水为零。我知道它正在抛出算术异常。我需要先使用 if 语句来检查这种情况,然后再尝试执行我正在执行的任何除法。所以,最后一个 if 语句我不知道该怎么做才能修复它。

import java.util.Scanner;

public class MathTest 
{
    public static void main (String[] args)
    {
        Scanner input = new Scanner(System.in);
        
            System.out.print("Input integer value 1: ");
            int iNum1 = input.nextInt();
            System.out.print("Input integer value 2: ");
            int iNum2 = input.nextInt();
            System.out.print("Input double value 1: ");
            double dNum1 = input.nextDouble();
            System.out.print("Input double value 2: ");
            double dNum2 = input.nextDouble();
            
            int add = iNum1 + iNum2;
            int sub = iNum1 - iNum2;
            int multi = iNum1 * iNum2;
            int div = iNum1 / iNum2;
            int mod = iNum1 % iNum2;
            double add2 = dNum1 + dNum2;
            double sub2 = dNum1 - dNum2;
            double multi2 = dNum1 * dNum2;
            double div2 = dNum1 / dNum2;
            
            int add3 = iNum2 + iNum1;
            int sub3 = iNum2 - iNum1;
            int multi3 = iNum2 * iNum1;
            int div3 = iNum2 / iNum1;
            int mod3 = iNum2 % iNum1;
            double add4 = dNum2 + dNum1;
            double sub4 = dNum2 - dNum1;
            double multi4 = dNum2 * dNum1;
            double div4 = dNum2 / dNum1;
            
            if (iNum1 > iNum2 || dNum1 > dNum2)
            {
            System.out.println("\nInteger output:");
            System.out.printf("Adding " + iNum1 + " and " + iNum2 + " = " + add);
            System.out.printf("\nSubtracting " + iNum1+ " and "+ iNum2+ " = " + sub);
            System.out.printf("\nMultiplying " + iNum1+ " and "+ iNum2+ " = " + multi);
            System.out.printf("\nDividing " + iNum1 + " and " + iNum2 + " = " + div);
            System.out.printf("\nModing " + iNum1 + " and " + iNum2 + " = " + mod);
            
            System.out.println("\n\nDouble output:");
            System.out.printf("Adding " + dNum1 + " and " + dNum2 + " = %.2f%n", add2);
            System.out.printf("Subtracting " + dNum1 + " and " + dNum2 + " = %.2f%n", sub2);
            System.out.printf("Multiplying " + dNum1 + " and " + dNum2 + " = %.2f%n", multi2);
            System.out.printf("Dividing " + dNum1 + " and " +  dNum2 + " = %.2f%n", div2);
            }
            
            else if (iNum1 < iNum2 || dNum1 < dNum2)
            {
                System.out.println("\nInteger output:");
                System.out.printf("Adding " + iNum1 + " and " + iNum2 + " = " + add3);
                System.out.printf("\nSubtracting " + iNum1 + " and "+ iNum2+ " = " + sub3);
                System.out.printf("\nMultiplying " + iNum1 + " and "+ iNum2+ " = " + multi3);
                System.out.printf("\nDividing " + iNum1 + " and " + iNum2 + " = " + div3);
                System.out.printf("\nModing " + iNum1 + " and " + iNum2 + " = " + mod3);
                
                System.out.println("\n\nDouble output:");
                System.out.printf("Adding " + dNum1 + " and " + dNum2 + " = %.2f%n", add4);
                System.out.printf("Subtracting " + dNum1 + " and " + dNum2 + " = %.2f%n", sub4);
                System.out.printf("Multiplying " + dNum1 + " and " + dNum2 + " = %.2f%n", multi4);
                System.out.printf("Dividing " + dNum1 + " and " +  dNum2 + " = %.2f%n", div4);
            }
            
            if (iNum1 == iNum2 || dNum1 == dNum2)
            {
                System.out.println("\nInteger output:");
                System.out.printf("Adding " + iNum1 + " and " + iNum2 + " = " + add);
                System.out.printf("\nSubtracting " + iNum1 + " from itself "+ " = " + sub);
                System.out.printf("\nSquaring " + iNum1 + " = " + multi);
                System.out.printf("\nDividing " + iNum1 + " and " + iNum2 + " = " + div);
                System.out.printf("\nModing " + iNum1 + " and " + iNum2 + " = " + mod);
                
                System.out.println("\n\nDouble output:");
                System.out.printf("Adding " + dNum1 + " and " + dNum2 + " = %.2f%n", add2);
                System.out.printf("Subtracting " + dNum1 + " from itself " + " = %.2f%n", sub2);
                System.out.printf("Squaring " + dNum1 + " = %.2f%n", multi2);
                System.out.printf("Dividing " + dNum1 + " and " +  dNum2 + " = %.2f%n", div2);
            }
            if (iNum2 == 0 || dNum2 == 0)
            {
                System.out.println("\nInteger output:");
                System.out.printf("Adding " + iNum1 + " and " + dNum2 + " = " + add);
                System.out.printf("\nSubtracting " + iNum1+ " and "+ dNum2 + " = " + sub);
                System.out.printf("\nMultiplying " + iNum1+ " and "+  dNum2 + " = " + multi);
                System.out.println("Error: You cannot divide and mod by zero!!!");
                
                System.out.println("\n\nDouble output:");
                System.out.printf("Adding " + dNum1 + " and " + dNum2 + " = " + add);
                System.out.printf("Subtracting " + dNum1 + " and " + dNum2 + " = " + sub);
                System.out.printf("Multiplying " + dNum1 + " and " + dNum2 + " = " + multi);
                System.out.println("Error: You cannot divide by zero!!!");
            }
            
        }
    }
    
4

1 回答 1

1

当你做除法时,你可以做这样的事情。它会默默地失败。

double dNum2 = 10;
double dNum1 = 0;
double div4 = 0;
try {
    div4 = dNum2 / dNum1;
} catch (ArithmeticException ae) {
}

通常,忽略捕获的异常被认为是不好的做法。但既然你在下面警告它,它应该没问题。

于 2020-09-07T22:59:47.353 回答