Java 在中声明变量一次
我有一个简单的java问题。我有一段代码:Java 在中声明变量一次,java,Java,我有一个简单的java问题。我有一段代码: int i1=0; for(String x: list1) { for(String y: list2) { if(x == y) { log ("Checking "+x+" with "+y+" => found a match!"); list1.remove(i1); break; }
int i1=0;
for(String x: list1)
{
for(String y: list2)
{
if(x == y)
{
log ("Checking "+x+" with "+y+" => found a match!");
list1.remove(i1);
break;
}
else
{
log ("Checking "+x+" with "+y+" => not matching!");
}
}
i1=i1+1;
}
正如你所看到的,我在上面声明了“i1”,但是有没有一种方法可以在第一次声明它一次,然后在完成之后,让它自己取消设置
希望你能理解我的意思。不,你不能在Java中这么做。如果将声明移动到
for
循环中,则变量将在循环的每次迭代中重新分配到其初始值
如果“unset”的意思是“超出范围”,那么你可能真的不需要担心这一点;这里没有性能问题。如果您真的想强制变量在外部for
循环结束时超出范围,您可以围绕整个循环创建一个额外的块,如下所示(但您真的不需要这样做,这是不必要的!):
{//block的开头也许您可以这样编写代码:
for(String x = list1.get(0), int i1 = 0; i1 < list1.size();
i1++, x = list1.get(i1) )
{
for(String y: list2)
{
if(x == y)
{
log ("Checking "+x+" with "+y+" => found a match!");
list1.remove(i1);
break;
}
else
{
log ("Checking "+x+" with "+y+" => not matching!");
}
}
}
for(int i1=0;i<list1.size();i1++)
{
String x=list1.get(i1);
for(String y: list2)
{
if(x == y)
{
log ("Checking "+x+" with "+y+" => found a match!");
list1.remove(i1--);
break;
}
else
{
log ("Checking "+x+" with "+y+" => not matching!");
}
}
}
for(字符串x=list1.get(0),int i1=0;i1检查“+x+”=>找到匹配项!”);
清单1.移除(i1);
打破
}
其他的
{
日志(“检查“+x+”与“+y+”=>不匹配!”);
}
}
}
如果我错了,请警告我。我不是Java专家,但我记得在迭代列表时不要从列表中删除对象
所以(即使我错了),你也应该这样做:
for(String x = list1.get(0), int i1 = 0; i1 < list1.size();
i1++, x = list1.get(i1) )
{
for(String y: list2)
{
if(x == y)
{
log ("Checking "+x+" with "+y+" => found a match!");
list1.remove(i1);
break;
}
else
{
log ("Checking "+x+" with "+y+" => not matching!");
}
}
}
for(int i1=0;i<list1.size();i1++)
{
String x=list1.get(i1);
for(String y: list2)
{
if(x == y)
{
log ("Checking "+x+" with "+y+" => found a match!");
list1.remove(i1--);
break;
}
else
{
log ("Checking "+x+" with "+y+" => not matching!");
}
}
}
for(int i1=0;iIt看起来您正在尝试重新创建removeAll(集合c)的功能
。您还错误地比较了字符串的值。
是否有任何特定原因使i1只增加一次。只需在for的块中声明它。是我还是这里缺少什么?我没有看到任何东西修改i1的值,它只是一直为0,并传递到remove()。编辑:这很奇怪,“i1=i1+1;”当我第一次打开此页面时不存在。您在一个方法中有10个for循环?我敢说我们发现了您的第一个问题。感谢您的回答,当我再次复制/粘贴此页面时,我得到了重复的变量,就像i2 i3 i5 i654546list1
是一个集合,而不是一个数组。