【问题标题】:How to fix an array method throwing a NullPointerException in Java? [duplicate]如何修复在 Java 中引发 NullPointerException 的数组方法? [复制]
【发布时间】:2021-07-06 11:11:01
【问题描述】:

我正在尝试制作一系列视频游戏。我想实现一个数组方法,如果有一个为空的可用索引,它将向数组添加一个新游戏。但是,当我尝试实现这种方法时。它会抛出 NullPointerException。

这是main方法中的代码:

public static void main(String[] args) {
        Game[] arr = new Game[3];
        Game t1 = new Game("The Walking Dead", 2012, "Telltale games");
        Game t2 = new Game("The Wolf Among Us", 2014, "Telltale games");
        Game t3 = new Game("Half-Life 2", 2007, "Valve");
        
        try {
            arr[2].addGame(t3);
        } catch(NullPointerException e) {
            System.out.println("Caught NullPointer");
            arr[0] = t1;
        }
        System.out.println(arr[0]);
    }

这是我在“游戏”类中实现的方法:

public Game addGame(Game game) {
        //TODO
        for(int i = 0; i < arr.length; i++) {
            try {
                if(arr[i] == null) {
                    arr[i] = game;
                }
            } catch(NullPointerException e) {
                System.out.println("Caught exception");
                arr[i] = game;
                return arr[i];
            }
        }
        return game;
    }

我非常迷茫,我不明白当我明确尝试检查 null 以尝试将新的“游戏”插入空索引时它是如何抛出 nullpointerexception 的。 任何帮助深表感谢! 谢谢!

【问题讨论】:

  • Game[] arr = new Game[3]; 创建一个空数组,因此数组中的每个元素都是null。您需要为数组分配一个值,即arr[0] = new Game("The Walking Dead", 2012, "Telltale games");。您还应该检查每个元素以确定它是否已被分配,即arr[0] != null,然后再尝试访问它

标签: java arrays exception nullpointerexception


【解决方案1】:

我建议在这里使用List

List<Game> games = new ArrayList<>();
Game g1 = new Game("The Walking Dead", 2012, "Telltale games");
Game g2 = new Game("The Wolf Among Us", 2014, "Telltale games");
Game g3 = new Game("Half-Life 2", 2007, "Valve");
games.add(g1);
games.add(g2);
games.add(g3);

使用数组Game[] 的问题在于,由于不知道末尾在哪里以及可用的大小,将新项目添加到末尾可能会很麻烦。列表避免了这些问题。

【讨论】:

  • 谢谢!只是想看看我可以将普通数组推多远,但我想它确实有其局限性。谢谢您的回答!祝你有美好的一天
猜你喜欢
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2020-06-24
  • 2020-11-26
相关资源
最近更新 更多