【问题标题】:Storing a random number in an array with a loop使用循环将随机数存储在数组中
【发布时间】:2018-04-04 22:31:59
【问题描述】:

我需要将一个随机数存储到一个数组中,然后能够在以后比较数组总和。到目前为止,我有这个:

public class Die {
    private int dieValue = 0;
    private Random randomNumbers = new Random();
    public Die() {
}

public void rollDie() {
    dieValue = randomNumbers.nextInt(6*1);
}
public void displayDie() {
    int[] die = new int[3];
    for(int counter = 0; counter<die.length; counter++ ) {
        rollDie();
        die[counter] = dieValue;
    }
    System.out.print("Your Dies are: " + die[1] + " and " + die[2] + " and " 
    + die[3]);
    dieValue = die[1] + die[2] + die[3];
}

这给了我一个错误,说数组索引超出范围,我不确定如何正确编码。任何提示都会很棒!

【问题讨论】:

标签: java arrays for-loop


【解决方案1】:

在 Java 中,数组从索引 0 开始,因此大小为 3 的数组(就像您所做的那样)将具有索引 0、1、2。越界是因为您尝试使用索引 1、2、3(3 不存在)。

另外,您是说您需要稍后访问这些值,因此您可能应该在方法之外声明数组,以便在方法完成后它仍然存在(刚才,由于变量,它会在 displayDie() 完成后消失。)

【讨论】:

    【解决方案2】:

    当您尝试访问存储在数组中的第一个值时索引应该是 0,在上面的代码中,您尝试访问 3 个值作为die[1]die[2]die[3],但您需要以 die[0]die[1]die[2] 的身份访问它们。

    【讨论】:

      【解决方案3】:

      displayDie() 方法中 die 数组的索引关闭,Java 中的数组索引从 0 开始。第一个值将是 die[0] 而不是 die[1]。

      【讨论】:

        【解决方案4】:

        最后一行

        dieValue = die[1] + die[2] + die[3];
        

        假设是

        dieValue = die[0] + die[1] + die[2];
        

        因为没有 die[3] 这就是你得到错误的原因

        你可以做什么并且会更好地循环数组

        for(int i=0; i< die.length; i++){
           dieValue +=die[i];
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-16
          • 2016-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-10
          • 2014-04-05
          相关资源
          最近更新 更多