这是我第一次在这里发帖,但我迫切需要一些 Java 专业知识(或者可能只是另一双眼睛)。
我正在将对象(结果)的 ArrayList 写入二维数组。我正在尝试使用嵌套循环。基本上,输入每一行并检查第一列,看看它是否与 ArrayList 中具有相同“团队”属性的任何一个相匹配。如果它找到一个匹配项,它会处理它并删除它,它会继续直到列表末尾,然后退出以在下一行重复该过程。
它似乎有效,但是当它找到匹配项并处理它(包括删除它)时,它似乎不会继续在内循环中查找更多匹配项。
谁能告诉我为什么它不继续循环?
这是我的代码:
private String[][] addScores(String[][] dataTable)
{
for(int r = 0; r < dataTable.length; r++)
{
Iterator<Result> itr = outcomes.iterator();
Result temp = new Result();
while(itr.hasNext())
{
temp = itr.next();
//If a team is found.
if (dataTable[r][0] == temp.team)
{
//Increases matches played.
dataTable[r][1] = String.valueOf(Integer.parseInt(dataTable[r][1]) + 1);
if(temp.result == WIN)
{
dataTable[r][2] = String.valueOf(Integer.parseInt(dataTable[r][2]) + 1);
}
if(temp.result == DRAW)
{
dataTable[r][3] = String.valueOf(Integer.parseInt(dataTable[r][3]) + 1);
}
if(temp.result == LOSE)
{
dataTable[r][4] = String.valueOf(Integer.parseInt(dataTable[r][4]) + 1);
}
//removes entry.
itr.remove();
break;
}
}
}
return dataTable;
}
最佳答案
您存储球队名称和获胜/平局/失利记录的方式非常尴尬。这个怎么样:
创建团队类
public static class Team
{
String name;
int win;
int draw;
int lose;
}
将这些团队放入 HashMap 中(使用团队名称作为键):
Map<String,Team> map = new HashMap<String,Team>( );
您可以使用以下方法将新团队添加到 map 中:
map.put( team.name, team );
然后,当您迭代结果时,您需要的是:
Iterator<Result> itr = outcomes.iterator();
while(itr.hasNext())
{
Result temp = itr.next();
Team team = map.get( temp.team );
// etc...
}
关于java - 将属性写入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9833791/