gpt4 book ai didi

java - Java 中的空指针异常。 (数组的 for 循环被破坏了?)

转载 作者:行者123 更新时间:2023-12-01 17:16:46 25 4
gpt4 key购买 nike

因此,我阅读了其他人提出的许多其他问题,但找不到适合我的解决方案。我正在学习java,决定制作一个简单的基于控制台的战舰游戏来测试一些基本的java原理和实现。就在程序的一开始,我收到一个 NullPointerException 错误。

这是我的代码在出现错误时的样子:

public class Battleship {

public static String[] xValues = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
public static String[] shipNames = {"patrol", "sub", "cruiser", "battle", "carrier"};
public static boolean isCollision = true;

//Create the Ship Array
public static Ship[] ships = new Ship[5];



public static void main(String[] args) {

//Welcome the User
System.out.println("Welcome to Battleship!\nLet's see how many tries it take to sink the ships!");

//Now, let's make 5 kinds of ships: Patrol Boat, Submarine, Cruiser, Battleship, Carrier. Each has a different size.
for (int i = 0; i < shipNames.length; i++){
ships[i].setName(shipNames[i]);
}

我唯一能想到的可能是封装问题,因为数组 ShipNames 的静态值位于 main 方法之外。但将其放在 main 方法中也不能解决问题。我认为垃圾收集可能发生在主方法启动时并销毁了数组,因为它是空的,但这也不起作用,因为调试器显示 shipNames.length = 5我很困惑。这里有什么想法吗?提前致谢。

最佳答案

您需要为数组的每个槽创建一个新的 Ship 对象。请记住,对象的默认值为 null

for (int i = 0; i < shipNames.length; i++){
ships[i] = new Ship();
ships[i].setName(shipNames[i]);
}

关于java - Java 中的空指针异常。 (数组的 for 循环被破坏了?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21491924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com