2016-05-24 6 views
0

私は2D配列の座標のインジケータを印刷しようとしています...
配列上のオブジェクトをインスタンス化するために使用した別のクラスがあります。座標マーカをオブジェクトの2D配列で印刷します。 Java

私は2つの変数(ローカル?)にストア座標を格納し、それらの座標の位置を印刷された配列に表示する必要があります。

これは私が今まで持っているコードのスニペットですが、配列の正しい場所に 'C'を印刷することができません。私が疲れたいくつかのオプションは、まったく印刷しないか、左上隅に 'C'を表示します。

これは私が疲れたオプションの1つです。このオプションでは、 'C'はまったく表示されません。

private int cX=0; 
    private int cY=0; 

    //Randomly set coordinates on array. 

     for(int i=0; i<array.length; i++){ 
      for(int j=0; j<array[i].length; j++){ 
       int x = randGen.nextInt(9); 
       int y = randGen.nextInt(9); 
       if (array [x][y].display()=='.'){ 
        x=cX; 
        y=cY; 
       } 
      } 
     } 


    // print array 

    private void displayArray() 
    { 

     for (int i = 0; i < array.length; i++){ 
     for (int j = 0; j < array[i].length; j++){ 
      if ((array [i][j].display()==cX)&& 
       (array [i][j].display()==cY)) 
       System.out.print("C"); 
       System.out.print(board [i][j].display()+"\t") 
     } 
      System.out.println("\n"); 
     } 
    } 
+1

あなたの質問に言い換えて、例を挙げてください。 –

+0

申し訳ありませんが、説明するのは難しいです。 2つのローカル変数に座標を格納し、それらの座標の位置を印刷された配列に表示する必要があります。 (これはすでにさまざまなオブジェクトでインスタンス化されています) – user4824195

答えて

0

完全性のために:私はそれを働いたと思います。 (まあ、とにかく働いているようです)。 助けてくれてありがとう!

private int cX=0; 
    private int cY=0; 


    //Randomly set coordinates on the array. 
for(int i=0; i<1; i++){ 
    int x = randGen.nextInt(9); 
    int y = randGen.nextInt(9); 
    if (board [x][y].display()=='.'){ 
    CX=x; 
    CY=y; 
    } 
} 


//Print array 
private void displayArray(){ 
for (int i = 0; i < board.length; i++){ 
    for (int j = 0; j < board[i].length; j++){ 
    if ((i==CX)&&(j==CY)) 
    System.out.print("C"+"\t"); 
    else 
    System.out.print(board [i][j].display()+"\t"); 
    } 
System.out.println("\n"); 
} 
} 
0

あなたが理解していれば、座標をある種のデータ構造に保存して後で表示したいと思っていますか?

この目的のためにクラスを作成することは適切ではありませんか?例えば。 Coordinatorと呼ばれるクラスで、X &のY値を保持します。

X & Y値で作成したクラスのオブジェクトを後で作成し、ArrayListに配置します。

コード例:

//Creating the a object holding 2 values 
Coordinator cords = new Coordinator(randGen.nextInt(9), randGen.nextInt(9)); 

//Putting in the object to the data structure 
List<Coordinator> list = new ArrayList<>(); 
list.add(cords); 

説明とコード例では、うまくいけば自分でこの問題を解決するのに役立つはずです。

+0

はい、そうだと思います。私は割り当てをしていますが、要件の1つはオブジェクトではないということです。これは行と列の座標であり、追跡され、配列に表示されなければなりません。 – user4824195

0

このオプションでは、 'C'はまったく印刷されません。

あなたの現在のコード例は実際には 'C'を印刷しません。

for (int j = 0; j < array[i].length; j++){ 
if ((array [i][j].display()==cX)&& 
     (array [i][j].display()==cY)) 

このCxがCYに等しく、両方がアレイに割り当てられたASCIIコード値に等しい(のための「」これは値46である)場合にのみ条件が真であるかどう。しかし、あなたは単にcX、cYの位置を見つけて、 'C'を印刷したいかもしれません。あなたは現在のiとjの値であなたの位置(cX、cY)をキャンパーしようとするべきです。

if ((i==cX)&&(j==cY)) 

プリント左上

あなたは位置の配列の内容を変更することはありませんで「C」。あなたが上書きされ、xとyを設定してあり、後がないアクセス

int x = randGen.nextInt(9); 
int y = randGen.nextInt(9); 
if (array [x][y].display()=='.'){ 
     x=cX; 
     y=cY; 
} 

あなたは「C」ボードゲームのように、表示するためのランダムな位置を見つけたいですか? 次に、見つかったx座標とy座標をcXとcYに割り当てる必要があります。正しい値が左の変数に割り当てられます。

cX = x; 
cY = y; 

私はあなたのことを正しく理解してください。

関連する問題