【发布时间】:2018-07-28 13:54:36
【问题描述】:
我不想将新项目添加到现有列表中,而是想为新项目创建一个新列表。例如,
FINAL OUTPUT:[[case1, this is method A], [case2, this is method A]]
但是,我的代码输出是
FINAL OUTPUT:[[case1, this is method A, case2, this is method A], [case1, this is method A, case2, this is method A]]
我不太确定我哪里出错了。 任何帮助不胜感激!谢谢!
以下是我的代码。
static List<List<String>> list = new ArrayList<>();
static ArrayList<String> temp = new ArrayList<>();
public static void main(String[] args) {
for (int q = 1; q < 3; q++) {
switch (q) {
case 1:
temp.add("case1");
methodA();
list.add(temp);
break;
case 2:
temp.add("case2");
methodA();
list.add(temp);
break;
}
}
System.out.println("FINAL OUTPUT:" + list);
}
private static void methodA() {
temp.add("this is method A");
}
【问题讨论】:
-
temp最好在循环内声明。并发送至methodA(List<String> temp)。您遇到的问题是使用范围超出必要范围的常见后果。 -
这种形式的循环绝对没有意义,见en.wikipedia.org/wiki/Loop-switch_sequence
-
@Clashsoft,不,不是。 OP要输入
switch2次 -
@Andrew Tobilko 循环和切换毫无意义,请参阅链接。第一次进入 switch 时 q 是 1,第二次是 2。他可以去掉循环头、switch、case 标签和 break 语句,代码会做和以前一样的事情,而且更容易了解。
-
@Clashsoft,if OP 想要 test 使用这个 sn-p 的所有可能(和可接受的)情况? (如果这不是这段代码的目的,那你是绝对正确的)。
标签: java arraylist multidimensional-array