迭代通过ArrayList <object <string>&gt; </object <string>

时间:2013-03-11 15:36:50

标签: java arrays arraylist loops

我在迭代ArrayList时遇到了一些麻烦。我有一个名为Row的类,它扩展了ArrayList<String>。我有另一个名为Table的类,它扩展了ArrayList<Row>

我正在尝试遍历Table类,将行的ArrayList转换为字符串的二维数组。

以下是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但是如果我在第二个循环中为每个循环初始化它,它只会迭代我Table ArrayList中的第一个元素?

提前感谢任何指示。

3 个答案:

答案 0 :(得分: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++;
}

答案 1 :(得分:3)

可显示的方法有两个错误:

  • 第一个for-loop没有{}
  • 我没有增加(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++;
  }
}

答案 2 :(得分: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++;
        }