2017-12-06 9 views
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に置くなど)を置くことができます。

+3

ローカル変数と同じ名前のクラスメンバーがあります。 –

+0

'String [] []を呼び出すと、gameboard = new String [maxRow] [maxCol]; fillArray(gameboard、 ""); 'ctorでは、ローカル変数を作成/変更しています。クラスメンバ 'gameboard'は未初期化のままです。プログラムのどこかでそれを使用しようとすると、エラーが発生します。 'fleetboard'と同じです。 –

+0

私はそれを次のように変更しました: 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

答えて

1
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], " "); 
     } 
    } 
} 

事前構築された方法を使用して、各配列をループし、このメソッドを使用してスペースで埋めます。

関連する問題