简体   繁体   English

Java板阵列故障

[英]Java board array trouble

I am working on a program to create a battleship game using ansi codes. 我正在开发一个使用ansi代码创建战舰游戏的程序。 The ansi codes isn't much of a problem, since I found out that these codes allow me to overwrite print lines. ansi代码没什么大问题,因为我发现这些代码使我可以覆盖打印行。 My plan was to use this to place ships on a already drawn board. 我的计划是使用它来将船放置在已经绘制好的板上。 My problem lies in my array that's placing the ships ("0"). 我的问题在于放置飞船的数组(“ 0”)。 Can't seem to get past the nullpointerexception error. 似乎无法克服nullpointerexception错误。 I feel that this is the only thing stopping me from finishing the program. 我觉得这是唯一阻止我完成程序的事情。 Any help would be highly appreciated. 任何帮助将不胜感激。

A portion of my program is below. 我的程序的一部分在下面。

Coordinate Class : 座标类别:

public class Coordinate {
   public String piece;
   int row, col, type;
   public boolean select, empty, hit, ship;
   public String [][] shipPiece;

   public String section()
   {
       piece = "i";

       empty = true;
       select = false;
       hit = false;
       //ship = false;

       if (empty)
       {
           piece = "\033[33m0\033[0m";
       }
       else if(!empty)
       {
           //empty = true;
           ship = true;
           piece = "0";
       }
       else if(!hit && ship)
           piece = "\033[33m0\033[0m";

       return piece;
   }

   public String placeShip()
   {
       for(int x = 0; x<=10; x++)
       {
           for(int y = 0; y<=10; y++)
           {
               shipPiece[x][y] = piece;
           }
       }
       return piece;   
   }
}

Player class : 玩家等级:

public class Player {

    private String name1, name2;
    //private ArrayList<Coordinate> moves;
    //private Coordinate move;
    private int playerNumber;
    Scanner in = new Scanner(System.in);
    Board bawd = new Board();
    Coordinate c = new Coordinate();
    Ship sh = new Ship();

    public Player(){}

    public void GetNames()
    {
        for(playerNumber = 1; playerNumber <= 2; playerNumber++)
        {
           System.out.print("Player " + playerNumber + ": ");
           name1 = in.nextLine();
           playerNumber++;
           System.out.print("Player " + playerNumber + ": ");
           name2 = in.nextLine();
           System.out.print("\033[2J");
        }
    }

    public void setShips()
    {
        bawd.singleP1View();
        sh.coordLoc();
        System.out.println("\033[2J");
        bawd.singleP2View();
        sh.coordLoc();
        System.out.println("\033[2J");
        game();
    }

    public void game()
    {
        bawd.p1turn();
        c.placeShip();
    }

}

The shipPiece array is not initialized. shipPiece array未初始化。

Change 更改

 public String [][] shipPiece;

to

 public String [][] shipPiece = new String [11][11];

This has never been initialized 这从未被初始化

public String [][] shipPiece;

You should initialize something like this 你应该这样初始化

public String [][] shipPiece = new String[10][10];

You never initialize your shipPiece . 您永远不会初始化shipPiece You have to initialize it for example this way: 您必须通过以下方式进行初始化:

public String [][] shipPiece = new String[11][11];
public String [][] shipPiece;

您没有初始化这个坏男孩!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM