簡體   English   中英

遍歷包含 java 中對象的數組時遇到問題

[英]trouble iterating through array containing objects in java

我一直在尋找一段時間,並沒有在我所擁有的特定場景中找到這個問題的答案。

我有一個任務,我需要創建一個程序,該程序采用 5 個骰子的隨機 output 並確定游戲 Yahtzee 的可能得分值。

現在我有一個包含骰子的 class,我需要用它來創建一個 5 的數組。

package Assign1;

public class Dice {
    int value;

    public Dice(){
        value = -1;
    }

    public Dice(int num){
        value = num;
    }

    public void roll(){
        int num = RandomNumber.getRandomNumber(1, 6);
        value = num;
    }   

    public int getValue(){
        return value;
    }

}

在我的下一個文件中,我必須創建該數組,並且對於數組中的每個 object,運行roll()方法,該方法應該將 object 的值更改為隨機數。 現在,我無法運行該代碼。

package Assign1;

public class Yahtzee {
    Dice[] dice;

    public Yahtzee(){
        dice = new Dice[5];
        for (int i = 0; i < dice.length; i++){
            dice[i].roll();
        }
    }

    public static void main(String[] args) {
        Yahtzee var = new Yahtzee();
        int test = var.dice[0].getValue();
        System.out.println(test);
    }
}

底部是我只是想看看我的代碼是否能正常工作。

我正在嘗試遍歷 dice 對象數組並使用i訪問索引,這將知道 object 並滾動該值。

我收到以下錯誤:

線程“主”java.lang.NullPointerException 中的異常:無法調用“Assign1.Dice.roll()”,因為“Assign1.Yahtzee.dice[0]”是 null

我嘗試了多種執行此操作的方法均無濟於事,所以我最后的手段是在這里詢問。

我習慣於使用 Python 進行編程,因此 java 對我來說是一種截然不同的語言,而且我想要執行的很多事情都需要一種截然不同的方法。

對於我在這里做錯的事情以及由於 python 導致我如何編碼而可能遇到的任何問題,我們將不勝感激。

謝謝

tl;博士

receive the following error while trying to iterate through an object array and access the object and its methods: Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Assign1.Dice.roll()" because "Assign1.Yahtzee.dice [0]" 是 null

這個

dice = new Dice[5];

為 5 個 Dice 創建存儲但不實例化它們,它們仍然是 null

你需要做

for (...)
    newdice = new Dice();

那么你需要在這個新的roll上打電話

newdice.roll();

然后你可以將它添加到你的數組中

dice[i] = newdice;

聚在一起就會

public Yahtzee(){
    dice = new Dice[5];
    for (int i = 0; i < dice.length; i++){
        Dice newdice = new Dice();
        newdice.roll();
        dice[i] = newdice;
    }
}

當然可以將默認構造函數修改為實際調用roll ,然后您可以擺脫其他構造函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM