0
私はOOP、Javaを学ぶために戦艦ゲームアプリを作っています。私は、プレイヤーが彼らの艦隊を配置するために参照する "空の海"を表示したい。私がメインでこれを呼び出すString [] []にスペースを入れるにはどうしたらいいですか?
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;
}
}
}
:
myConsole.displayBoard(userBoard.getFleet(), userBoard);
userBoardは、ゲームボードのインスタンスであるここに私のゲームボードクラスの始まりです。 fleetboardはヌルでいっぱいです(私はデバッグしてこれを見ました)ので、私の結果はnullpointerexceptionです。
電流出力は次のようになります。
0 1 2 3 4 5 6 7 8 9
0 |
が、私はスペースのフルfleetboardを表示したいです。 displayBoardメソッドはフリートボード配列の周りにいくつかの情報を出力するので、プレーヤーはRLゲームと同様に船舶(例えば、船舶1を4,5に、船2を7,3に置くなど)を置くことができます。
ローカル変数と同じ名前のクラスメンバーがあります。 –
'String [] []を呼び出すと、gameboard = new String [maxRow] [maxCol]; fillArray(gameboard、 ""); 'ctorでは、ローカル変数を作成/変更しています。クラスメンバ 'gameboard'は未初期化のままです。プログラムのどこかでそれを使用しようとすると、エラーが発生します。 'fleetboard'と同じです。 –
私はそれを次のように変更しました: gameboard = new String [maxRow] [maxCol]; \t \t fillArray(gameboard、 ""); \t \t \t \t \t \t fleetboard = new String [maxRow] [maxCol]; \t \t fillArray(fleetboard、 ""); 文字配列を使用して、やりやすくすることができます。ありがとうございます! – winterfive