首页 > 解决方案 > 无法弄清楚为什么我得到 java.lang.ArithmeticException: / 为零

问题描述

我正在尝试创建一个 java 程序,该程序将采用输入金额并以最少的硬币输出零钱。虽然当我运行我的程序时,我得到了所需的输出,但我得到了 Change 方法的单元测试错误。这是我的代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int totalamount;
        int[] coins = new int[] { 100, 25, 10, 5, 1 };
        Scanner s = new Scanner(System.in);
        totalamount = s.nextInt();
        Change(totalamount, coins);
    }

    public static void Change(int totalamount, int[] coins) {
        int[] amount = new int[5]; 

        for (int i = 0; i < 5; i++) { 
            if (totalamount >= coins[i]) { 
                amount[i] = totalamount / coins[i]; 
                totalamount = totalamount % coins[i]; 
            } 
        }

        for (int i = 0; i < 5; i++) { 
            if(amount[i] != 0)
            System.out.println(amount[i]);
        } 
    }
}

这是我得到的单元测试错误:

Change(300, coins)
Your output
java.lang.ArithmeticException: / by zero

标签: javaarraysmethods

解决方案


coin[i] 在某些时候必须为零。检查您的数据。为了保护,额外检查硬币[i]

if (coins[i] > 0 && totalamount>= coins[i]) { 
...
}

推荐阅读