Java 以下代码给出错误的原因
下面的代码给了我一个编译错误。它说我应该在第二个循环中使用它之前在某个地方初始化Java 以下代码给出错误的原因,java,arrays,list,Java,Arrays,List,下面的代码给了我一个编译错误。它说我应该在第二个循环中使用它之前在某个地方初始化v,而在第一个循环中,一切似乎都很好。我想它可能会隐式初始化为0。感谢对此的任何反馈。此外,在这种情况下,最佳做法是什么 public static void main(String[] args) { ArrayList<Integer> list=new ArrayList<Integer>(); ArrayList<Integer>[] list2=(Arra
v
,而在第一个循环中,一切似乎都很好。我想它可能会隐式初始化为0。感谢对此的任何反馈。此外,在这种情况下,最佳做法是什么
public static void main(String[] args) {
ArrayList<Integer> list=new ArrayList<Integer>();
ArrayList<Integer>[] list2=(ArrayList<Integer>[])new ArrayList[10];
for(int v:list)
System.out.println(v);
for(int v:list2[v])
System.out.println(v);
}
publicstaticvoidmain(字符串[]args){
ArrayList=新建ArrayList();
ArrayList[]列表2=(ArrayList[])新的ArrayList[10];
用于(INTV:列表)
系统输出打印Ln(v);
for(int v:list2[v])
系统输出打印Ln(v);
}
您声明的第一个“v”仅限于第一个for循环,第二个“v”仅限于第二个for循环,因此您可以使用第二个for循环中的第一个“v”访问第一个“v”您声明的第一个“v”仅限于第一个for循环,第二个“v”仅限于第二个for循环,因此,您可以在第二个for循环中使用访问第一个“v”第一个“v”的范围仅限于第一个for循环
因此,在第二个循环中,下标中使用的“v”在第一次使用时没有声明
你希望在第二天做什么?打印列表2中的所有内容?如果是,则需要创建一个嵌套的for循环,如下所示:
for(ArrayList<> innerList : list2)
for(int i : innerList)
System.out.println(i);
for(ArrayList innerList:list2)
for(inti:innerList)
系统输出打印LN(i);
请注意,由于list2包含ArrayList而不是int,因此您不能像在代码中那样执行for(迭代变量不能是int)。第一个“v”的范围仅限于第一个for循环 因此,在第二个循环中,下标中使用的“v”在第一次使用时没有声明 你希望在第二天做什么?打印列表2中的所有内容?如果是,则需要创建一个嵌套的for循环,如下所示:
for(ArrayList<> innerList : list2)
for(int i : innerList)
System.out.println(i);
for(ArrayList innerList:list2)
for(inti:innerList)
系统输出打印LN(i);
请注意,由于list2包含ArrayList而不是int,因此您不能像在代码中那样执行for(迭代变量不能是int)。您的代码与下面的代码类似
//begin loop 1
for(int v:list){
System.out.println(v);
}
//end loop 1
//begin loop 2
for(int v:list2[v]){
System.out.println(v);
}
//end loop 2
这里变量v将丢失给程序,因为它被限制在第一个for循环中。
(与局部变量方法相同)
正确的代码如下所示:
for (int v : list) {
System.out.println(v);
for (int x : list2[v]) {
System.out.println(x);
}
}
您的代码与以下代码类似
//begin loop 1
for(int v:list){
System.out.println(v);
}
//end loop 1
//begin loop 2
for(int v:list2[v]){
System.out.println(v);
}
//end loop 2
这里变量v将丢失给程序,因为它被限制在第一个for循环中。
(与局部变量方法相同)
正确的代码如下所示:
for (int v : list) {
System.out.println(v);
for (int x : list2[v]) {
System.out.println(x);
}
}
请看这篇文章
它说
在循环内创建的任何变量都是循环的局部变量。这意味着一旦退出循环,就无法再访问变量!这包括在循环签名中创建的任何变量。请阅读本文
它说
在循环内创建的任何变量都是循环的局部变量。这意味着一旦退出循环,就无法再访问变量!这包括在循环签名中创建的任何变量