2016-08-17 8 views
0

2次元オブジェクト配列の文字列値を表示します。私はArrays.toString(myTwoDimensionalArrayVariable)を試してみましたが、それは文字列値を表示しません。私は<code>JTable</code>の行と列を反復処理した後、配列の内容を表示しようとしています

私の目標は、ユーザーが、私は、配列の内容を表示したい理由ですJTableソースから行の値を追加しようとしたときにJTableの行あたりの列ごとに重複をチェックすることです。

列の値は、double,Stringおよびintの組み合わせです。

int myRowCount = aJTableParameter.getRowCount(); 
int myColumnCount = aJTableParameter.getColumnCount(); 
Object[][] myRowValues = new Object[myRowCount][myColumnCount]; 


for (int j = 0; j < myRowCount; j++) { 
    for(int i = 0; i< myColumnCount; i++){ 
     myRowValues[j][i] = aDestinationTable.getValueAt(j, i); 
    } 
} 

System.out.println(Arrays.toString(myRowValues)); 

if (Arrays.asList(myRowValues).contains(column1Value) 
       && Arrays.asList(myRowValues).contains(column2Value) 
       && Arrays.asList(myRowValues).contains(column3Value) 
       && Arrays.asList(myRowValues).contains(column4Value)) { 
      JOptionPane.showMessageDialog(null, "Duplicate, try again."); 
}else{ 
     //do something else 
} 

私はこの出力を得る:

run: 
Successfully recorded login timestamp 
[] 
[[Ljava.lang.Object;@35fa3ff2] 
[[Ljava.lang.Object;@407c448d, [Ljava.lang.Object;@1e78a60e] 

は、2次元配列を使用するよりも、他の選択肢はありますか?

私は、任意の助けをいただければと思います。

ありがとうございました。あなたのJTableのセルIFF

答えて

1

だけ文字列が含まれている、あなたは String[][]の代わり Object[][]として、あなたの配列を定義し、 aDestinationTable.getValueAt(j, i).toString()を使用してJTableの内容でそれを埋めることができます。

EDIT:それは(あなたのコメントどおり)場合ではないのですから、それはこのように、リストを使用することがおそらく良いでしょう:

List<List<Object>> objectList = new ArrayList<>(); 
    for (int j = 0; j < 2; j++) { 
     objectList.add(j, new ArrayList<>()); 
     for (int i = 0; i < 2; i++) { 
      if (i==0) objectList.get(j).add("string" + j + i); 
      if (i==1) objectList.get(j).add((double) 37.8346 * j * i); 
     } 
    } 

    System.out.println("OBJECT LIST: "+objectList); 

出力:

OBJECT LIST: [[string00, 0.0], [string10, 37.8346]] 

あなたのコードが見えるはずです提案のための

List<List<Object>> myRowValues = new ArrayList<>(); 
    for (int j = 0; j < myRowCount; j++) { 
     myRowValues.add(j, new ArrayList<>()); 
     for (int i = 0; i < myColumnCount; i++) { 
      myRowValues.get(j).add(aDestinationTable.getValueAt(j, i)); 
     } 
    } 

    System.out.println(myRowValues); 
+0

ありがとう:これ、のように。私はそれが文字列、倍数と整数の組み合わせだと忘れてしまったことを謝ります。 – p3ace

+0

ありがとうございました。私はリストを使用する必要があると思いますし、私の知識がのArrayListとアレイに制限されているとは思いませんでした。私は間違いなくリストを勉強したいと思う。私はその例を感謝します。これは問題を解決しました。なぜなら、これをelseブロックで比較できるからです。 – p3ace

関連する問題