我在迭代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
中的第一个元素?
提前感谢任何指示。
答案 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)
可显示的方法有两个错误:
代码:
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++;
}