使用硬币防止数组索引超出范围异常

时间:2014-11-13 00:16:52

标签: java

我试图找出一种方法,以最有效的方式将货币价值分成四分之一,硬币,镍币和硬币。这是我目前的代码:

public class CoinReader {
private static int amount = 0;
public static void main(String[] args) {
    amount = (int)(Double.parseDouble(args[0])*100);
    System.out.println("Five: " + computeCoin(500));
    System.out.println("one: " + computeCoin(100) );
    System.out.println("Q : " + computeCoin(25) );
    System.out.println("D : " + computeCoin(10) );
    System.out.println("N : " + computeCoin(5) );
    System.out.println("P : " + computeCoin(1) );
}

public static int computeCoin(int cointValue) {
    int val = amount / cointValue;
    amount -= val * cointValue;
    return val;
}

}

我目前正在获取一个数组索引超出范围的异常,我知道它与String数组和数量变量有关,但我正在尝试了解数组,我正在尝试让这个程序工作。任何帮助,将不胜感激。感谢。

3 个答案:

答案 0 :(得分:0)

args数组为空,没有索引为0的元素。您必须将一个命令行参数传递给您的程序。从命令行运行时,请确保将数值作为参数传递,如下所示:

java CoinReader 113.25

答案 1 :(得分:0)

您正在使用args[0],而args似乎是空的。

您如何致电您的计划?您必须忘记传递参数。

答案 2 :(得分:0)

它运行:

javac CoinReader.java
java CoinReader 1230

输出继电器

Five: 246
one: 0
Q : 0
D : 0
N : 0
P : 0

让它正常工作:-P

编辑:

正如其他人已经提到的,参数String args[]指的是在运行已编译的程序时在命令行上提供的参数。当你没有提供参数时,你会得到ArrayOutOfBondsException,因为数组将是空的。

当我说有乐趣让它发挥作用我的意思是你的computeCoin方法似乎有错误,因为它不会输出P,N,D和Q的结果。但这是超出你的初步问题。

第二次编辑:

它不只是运行。它运行得很好。

java CoinReader 10.11

输出:

Five: 2
one: 0
Q : 0
D : 1
N : 0
P : 1