2

を繰り返し処理するのに問題がありますArrayListRowを拡張するという名前のクラスがありますArrayList<String>Tableを拡張するという名前の別のクラスがありますArrayList<Row>

Table クラスを反復処理して、ArrayList行を文字列の 2 次元配列に変換しようとしています。

Tableクラスのコードは次のとおりです。

public class Table extends ArrayList<Row>
{
public Row[] appArray; //Array of single applicant details
public String tableArray[][]; //Array of every applicant
private ArrayList<Row> ar;
private Row r;

public Table()
{
}

public void addApplicant(Row app)
{
    add(app);
    displayable();
}

public void convertToArray()
{
    int x = size();
    appArray=toArray(new Row[x]);
}

public void displayable()
{
int i,j;
for (Row r: ar)
   i=0;
    for(String s: r){
        j=0;
        tableArray[i][j]=s;
        j++;
    }

}}

そしてここにRowクラスがあります:

public class Row extends ArrayList<String>
{
public Row(String appNumber, String name, String date, String fileLoc, String country, Table table)
{
    addDetails(appNumber,name,date,fileLoc,country);
    table.addApplicant(this);
}

public void addDetails(String appNumber, String name, String date, String fileLoc, String country)
{
    add(appNumber);
    add(name);
    add(date);
    add(fileLoc);
    add(country);
}}

私が問題を抱えている方法displayable()Tableクラスにあります。それは私に教えてくれますi may not have been initializedしかし、2番目の for each ループで初期化すると、私のTable ArrayList?の最初の要素だけが繰り返されます

ご指摘ありがとうございます。

4

3 に答える 3

4

ブロック インfor (Row r: ar)ループに失敗しました。

また、Fortegaが指摘したように、コードをインクリメントすることは決してなくi、間違った場所でカウンターをゼロにしていると思います。

したがって、代わりに:

for (Row r: ar)
   i=0;
   for(String s: r){
     j=0;
     tableArray[i][j]=s;
     j++;
   }

次のように書く必要があります。

i=0;
for (Row r: ar) {
  j=0;
  for(String s: r){
    tableArray[i][j]=s;
    j++;
  }
  i++;
}

または、カウンターの可視領域を絞り込み、初期化で宣言を結合することをお勧めします。

// Remove previous declarations

int i=0;
for (Row r: ar) {
  int j=0;
  for(String s: r){
    tableArray[i][j]=s;
    j++;
  }
  i++;
}
于 2013-03-11T15:38:39.847 に答える
3

displayable メソッドには 2 つのエラーがあります。

  • 最初の for ループに {} がありません
  • i はインクリメントされません (i++; 欠落)

コード:

public void displayable()
{
  int i,j;
  for (Row r: ar){
    i=0;
    for(String s: r){
        j=0;
        tableArray[i][j]=s;
        j++;
    }
    i++;
  }
}
于 2013-03-11T15:43:23.040 に答える
2

これを変える:

for (Row r : ar)
            i = 0;
        for (String s : r) {
            j = 0;
            tableArray[i][j] = s;
            j++;
        }

に:

for (Row r : ar) {
            i = 0;
            for (String s : r) {
                j = 0;
                tableArray[i][j] = s;
                j++;
            }
            i++;
        }
于 2013-03-11T15:40:15.020 に答える