Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的空指针异常。(对于使用阵列的循环是否中断?)_Java_Arrays_For Loop - Fatal编程技术网

Java中的空指针异常。(对于使用阵列的循环是否中断?)

Java中的空指针异常。(对于使用阵列的循环是否中断?),java,arrays,for-loop,Java,Arrays,For Loop,所以我读了很多其他人提出的问题,但找不到一个适合我的解决方案。 我正在学习java,并决定制作一个简单的基于控制台的战舰游戏来测试一些基本的java原理和实现。 在程序的最开始,我得到了一个NullPointerException错误 以下是我的代码在出现错误时的样子: public class Battleship { public static String[] xValues = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}; pu

所以我读了很多其他人提出的问题,但找不到一个适合我的解决方案。 我正在学习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]);
    }
公共级战舰{
公共静态字符串[]xValues={“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”};
公共静态字符串[]船名={“巡逻”、“潜艇”、“巡洋舰”、“战斗”、“航母”};
公共静态布尔值isCollision=true;
//创建船舶阵列
公共静态船舶[]艘=新船舶[5];
公共静态void main(字符串[]args){
//欢迎用户
System.out.println(“欢迎来到战舰!\nLet让我们看看击沉战舰需要多少次尝试!”);
//现在,让我们制作5种船舶:巡逻艇、潜艇、巡洋舰、战列舰、航母。每种都有不同的尺寸。
对于(int i=0;i
我唯一能想到的可能是封装问题,因为数组shipNames的静态值在main方法之外。但是将它放在main方法内也不能解决它。我想可能是垃圾收集发生在main方法启动时,并破坏了数组,因为它是空的,但这并不能解决问题'也无法工作,因为调试器显示
shipNames.length=5
我很困惑,有什么想法吗?
提前感谢。

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

for (int i = 0; i < shipNames.length; i++){
        ships[i] = new Ship();
        ships[i].setName(shipNames[i]);
}
for(int i=0;i
您需要为数组的每个插槽创建一个新的
Ship
对象。请记住,对象的默认值为
null

for (int i = 0; i < shipNames.length; i++){
        ships[i] = new Ship();
        ships[i].setName(shipNames[i]);
}
for(int i=0;i
replicate of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of,of(使用
Arrays.toString(ship)
),您会看到输出是
[null,null,null,null,null]
.Wow.回答得很好,速度很快。我没有把对象分为三个部分:声明、分配内存,然后实例化。一旦程序继续运行,这也清除了其他地方更多的相同错误。非常感谢!@user3250023如果您打印了
Ship
数组(使用
数组。toString(Ship)
),您将看到输出是
[null,null,null,null,null]