我正在试图弄清楚如何在TOP 3
points | names
---------------------------
18 | mike
19 | tim
20 | joe, mike, tina
的最右边添加一个额外的列而没有运气。我的方法2D ArrayList
无限制地运行循环。我有以下内容:
addCol()
但为什么我的方法无限运行。在任何情况下,我都包含了我的BAC
BEC
BEA
BAB
方法。
Class Tester
toString()
班级董事会
import java.util.*;
public class Tester {
public static void main(String[] args){
String[][] myString = {{"A", "B", "C"}, {"A", "A", "A"}, {"B", "A", "C"}, {"B", "E", "C"}, {"B", "E", "A"}, {"B", "A", "B"}};
// board.addRow();
board.addCol();
System.out.println(board);
}
}
答案 0 :(得分:2)
循环
for(int i = 0; i < myBoard.size(); i++){
myBoard.add(col);
}
不是你的意思。每次迭代,您都会添加到myBoard
,因此myBoard.size()
增加1
,而i
永远不会赶上它。
你必须是这样的意思
for(int i = 0; i < myBoard.size(); i++){
myBoard.get(i).add(null);
}
或者,甚至更好
for (List<T> list : myBoard)
list.add(null);
答案 1 :(得分:1)
public void addCol(){
ArrayList<T> col = new ArrayList<T>();
for(int i = 0; i < myBoard.size(); i++){
myBoard.add(col);
}
}
仔细查看您的方法。您添加的是行而不是myBoard
是ArrayList
列表的列。
您需要修改您的方法。请关注评论
public void addCol(){
ArrayList<T> row = new ArrayList<T>();// row
T t = new T(); // column
T t2 = new T();// column
row.add(t)/ adding column
row.add(t2)/ adding another column and so on
myBoard.add(row); // now adding whole row to myBoard
for(int i = 0; i < myBoard.size(); i++){
myBoard.add(col);
}
}
这将立即添加列。如果你想添加到特定的行,你需要先了解索引
public void addCol(int index ){
T col = new T();// create or receive in method params
myBoard.get(index).add(col);
}