2017-02-08 13 views
0

私は印刷する2D配列を作成する必要がありますが、すべての具体的な詳細を含めるのは苦労しています。私は、ユーザーの入力を介して行と列の数を与えられた後、ランダムな "#"と乱数でいっぱいに、左下に "S"と右下に "D"と配列を印刷する必要があります。 [1,100]の範囲内でランダムに生成された数字は ですが、「#」の合計数はマトリックスの合計サイズの1/3を超えることはできません。特定のランダムな整数/文字で2D配列を塗りつぶし

はしかし、私はむしろこだわっていると、どこに自分のコードに行くかわからない...

コード:

public void drawMaze(int numRows, int numCols) { 

    int[][] mazeArray = new int[numRows][numCols]; 
    Random random = new Random(); 

    // Starting Point 
    mazeArray[0][0] = "S"; 
    // Destination Point 
    mazeArray[numRows][numCols] = "D"; 

    for (int i = 0; i < mazeArray.length; i++) { 
     for (int j = 0; j < mazeArray[i].length; j++) { 
      mazeArray[i][j] = (int)(Math.random()*10); 
     } 
    } 

} 

ヘルプをいただければ幸いです!

+1

最初にあなたのSとDがあなたのforループで上書きされます –

答えて

0

これは、このようなものが考えられます。

public void drawMaze(int numRows, int numCols) { 
    String[][] mazeArray = new String[numRows][numCols]; 
    Random random = new Random(); 
    for (int i = 0; i < mazeArray.length; i++) { 
     for (int j = 0; j < mazeArray[i].length; j++) { 
      int result = 1 + random.nextInt(200); 
      if (result > 100) { 
       mazeArray[i][j] = "#"; 
      } else { 
       mazeArray[i][j] = Integer.toString(result); 
      } 
     } 
    } 
    //starting point 
    mazeArray[0][0] = "S"; 
    //destination point 
    mazeArray[numRows-1][numCols-1] = "D"; 
    for (int i = 0; i < mazeArray.length; i++) { 
     for (int j = 0; j < mazeArray[i].length; j++) { 
      System.out.print(String.format("%4s", mazeArray[i][j])); 
     } 
     System.out.println(); 
    } 
} 

200は単にハードコードされた値です。 メソッドの引数に依存させることができます。
4のSystem.out.print(String.format("%4s", mazeArray[i][j]));はスペーシングを担当します(もちろん、別の整数に変更することもできます)。

0

フィールドごとに次のフィールドに進むべきではありません。より良い方法は、フィールドをランダムに塗りつぶし、フィールドの1/3を空にして#で塗りつぶすことです。

  • maxFields
  • セットアップ1次元配列(fieldsToFill)=数字(numRowsの数* NUMCOLS * 2月3日)を埋めるためにあなたの全体的なフィールドを計算 "#"
  • との完全な配列(mazeArray)を記入あなたは迷路の塗りつぶしを取得し、この方法は、ランダムにfieldsToFillの数を選択して、2次元の配列mazeArrayにこのフィールドPOSを埋めるとfieldsToFill

からその要素を削除今

  • をインクリメント、maxFieldsに0で埋めよりランダムに編集する。

  • 関連する問題