java - 无法弄清楚为什么我得到 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
解决方案
coin[i] 在某些时候必须为零。检查您的数据。为了保护,额外检查硬币[i]
if (coins[i] > 0 && totalamount>= coins[i]) {
...
}
推荐阅读
- spring-integration - 如何让 Spring Integration Http.inboundGateway 返回 HAL Json?
- python - 为什么脚本无法创建注册表项?
- python - Jupyter 导入函数中的相对文件路径
- python - 如何在自定义 Bazel 规则或 genrule 中打包生成的 python 文件?
- python - 使用列表推导根据列表中的条件更改字符串
- angular - 如何在 http 错误的情况下停止订阅
- c - Linux I2C:读取消息的长度
- c++ - 覆盖 C++ 中的成员变量
- javascript - 你能告诉我我哪里做错了吗?
- python - Pandas:在索引匹配的地方加入或合并