Java 如何在字符串[]中填充空格?

Java 如何在字符串[]中填充空格?,java,arrays,Java,Arrays,我正在创建一个战舰游戏应用程序来学习OOP,Java。我想显示一个“空海”供玩家参考以放置他们的舰队。以下是我的Gameboard课程的开始: public class Gameboard { private int maxRow = 10; private int maxCol = 10; private String[][] gameboard; // Hits and misses private String[][] fleetboard; // Ship locations p

我正在创建一个战舰游戏应用程序来学习OOP,Java。我想显示一个“空海”供玩家参考以放置他们的舰队。以下是我的Gameboard课程的开始:

public class Gameboard {

private int maxRow = 10;
private int maxCol = 10;
private String[][] gameboard;   // Hits and misses
private String[][] fleetboard;  // Ship locations
private boolean isHuman = false;
private ArrayList <Ship> myShips;
private ArrayList <Point> myShots;

public Gameboard(boolean isHuman) {
    this.isHuman = isHuman;

    String[][] gameboard = new String[maxRow][maxCol];
    fillArray(gameboard, " ");      

    String[][] fleetboard = new String[maxRow][maxCol];
    fillArray(fleetboard, " ");     
}

/*
 * Fills null String[][] with spaces, " "
 * String[][], String -> void
 */
protected void fillArray(String[][] board, String s) {
    // doesn't work TODO
    for (String[] row : board) {
        Arrays.fill(row, s);
    }   

    // also doesn't work TODO       
    for(int i = 0; i < maxRow; i++) {
        for(int j = 0; j < maxCol; j++) {
            board[i][j] = s;
        }
    }
}
userBoard是Gameboard的一个实例。我的结果是一个nullpointerexception,因为fleetboard充满了Null(我调试并看到了这一点)

电流输出为:

   0 1 2 3 4 5 6 7 8 9    
0 |
我想展示一个充满空间的fleetboard。displayBoard方法在fleetboard阵列周围输出一些信息,以便玩家可以放置类似于RL游戏的飞船(例如,ship#1位于4,5,ship#2位于7,3,等等);
package com.company;

import java.util.Arrays;

public class Main {

    public static void main (String[]args) {

        String[][] arrayOfArraysOfSpaces = new String[3][3]; // sample size 3x3

        for (int i = 0; i < arrayOfArraysOfSpaces.length; i++) {
            Arrays.fill(arrayOfArraysOfSpaces[i], " ");
        }
    }
}
导入java.util.array; 公共班机{ 公共静态void main(字符串[]args){ 字符串[][]arrayOfArraysOfSpaces=新字符串[3][3];//样本大小3x3 对于(int i=0;i
使用预构建的方法,循环遍历每个数组并使用该方法填充空格。

您的类成员与局部变量同名。当您调用
String[][]gameboard=new String[maxRow][maxCol];填充阵列(游戏板“”)在ctor中,您正在创建/修改局部变量。类成员
gameboard
保持未初始化状态。如果您试图在程序的其他地方使用它,您将得到一个错误。与fleetboard相同。我将其更改为:gameboard=新字符串[maxRow][maxCol];填充阵列(游戏板“”);fleetboard=新字符串[maxRow][maxCol];填充阵列(fleetboard,“”);我可能会转而使用字符数组,以使事情变得更简单。。非常感谢。
package com.company;

import java.util.Arrays;

public class Main {

    public static void main (String[]args) {

        String[][] arrayOfArraysOfSpaces = new String[3][3]; // sample size 3x3

        for (int i = 0; i < arrayOfArraysOfSpaces.length; i++) {
            Arrays.fill(arrayOfArraysOfSpaces[i], " ");
        }
    }
}