Java 循环条件是否可以在循环中间更改?
在java编程中: 我有一些类似于Java 循环条件是否可以在循环中间更改?,java,for-loop,arraylist,Java,For Loop,Arraylist,在java编程中: 我有一些类似于 ArrayList<String> list = new ArrayList<String>(); int listSize = list.size(); for(int x = 0; x< listSize; x++){ list.remove(x); listSize = list.size(); } ArrayList list=new ArrayList(); int listSize=list.si
ArrayList<String> list = new ArrayList<String>();
int listSize = list.size();
for(int x = 0; x< listSize; x++){
list.remove(x);
listSize = list.size();
}
ArrayList list=new ArrayList();
int listSize=list.size();
对于(int x=0;x
这行得通吗?或者for循环将继续运行。谢谢 我有点担心你在这里试图做什么。每当有人想在循环中从集合中删除项而不使用
迭代器时,通常会发出警报
所以,要回答前面提到的问题::如果你改变了循环不变量,那么你会得到一些古怪的行为。这就是为什么它经常被称为“不变量”;你不想改变它。当然欢迎你来,但你在玩火
但是,让我们假设我们有一个包含5个元素的列表,我们按原样执行代码
List<String> stringList = Arrays.asList("word", "another word", "let's go", "keep it up", "get moving");
int length = stringList.size();
for(int i = 0; i < length; i++) {
System.out.println(stringList.remove(i));
length = stringList.size();
}
System.out.println("done");
我有点担心你想在这里做什么。每当有人想在循环中从集合中删除项而不使用迭代器时,通常会发出警报
所以,要回答前面提到的问题::如果你改变了循环不变量,那么你会得到一些古怪的行为。这就是为什么它经常被称为“不变量”;你不想改变它。当然欢迎你来,但你在玩火
但是,让我们假设我们有一个包含5个元素的列表,我们按原样执行代码
List<String> stringList = Arrays.asList("word", "another word", "let's go", "keep it up", "get moving");
int length = stringList.size();
for(int i = 0; i < length; i++) {
System.out.println(stringList.remove(i));
length = stringList.size();
}
System.out.println("done");
循环不会继续运行,它将毫无例外地结束。但结果可能不是你所期望的。
除了“ArrayList#clear()”或迭代器之外,还有一种从一个数组中删除所有元素的方法。您也可以尝试以下代码,只需从循环条件中删除“x++”
ArrayList<String> list = new ArrayList<String>();
int listSize = list.size();
for(int x = 0; x< listSize;){
list.remove(x);
listSize = list.size();
}
ArrayList list=new ArrayList();
int listSize=list.size();
对于(int x=0;x
循环不会继续运行,它将毫无例外地结束。但结果可能不是你所期望的。
除了“ArrayList#clear()”或迭代器之外,还有一种从一个数组中删除所有元素的方法。您也可以尝试以下代码,只需从循环条件中删除“x++”
ArrayList<String> list = new ArrayList<String>();
int listSize = list.size();
for(int x = 0; x< listSize;){
list.remove(x);
listSize = list.size();
}
ArrayList list=new ArrayList();
int listSize=list.size();
对于(int x=0;x
为什么不在“while”循环中执行
ArrayList list=new ArrayList();
int listSize=list.size();
while(list.size()!=0){
列表。删除(x);
}
为什么不在“while”循环中执行
ArrayList list=new ArrayList();
int listSize=list.size();
while(list.size()!=0){
列表。删除(x);
}
从技术上讲,计算机科学课程可能会告诉你这样做:
public void solve() {
ArrayList<String> list = new ArrayList<String>();
Iterator iter = list.iterator();
while(iter.hasNext()) {
System.out.println("Next value is: " + iter.next());
iter.remove();
}
}
public void solve(){
ArrayList=新建ArrayList();
迭代器iter=list.Iterator();
while(iter.hasNext()){
System.out.println(“下一个值是:”+iter.Next());
iter.remove();
}
}
从技术上讲,计算机科学课程可能会告诉你这样做:
public void solve() {
ArrayList<String> list = new ArrayList<String>();
Iterator iter = list.iterator();
while(iter.hasNext()) {
System.out.println("Next value is: " + iter.next());
iter.remove();
}
}
public void solve(){
ArrayList=新建ArrayList();
迭代器iter=list.Iterator();
while(iter.hasNext()){
System.out.println(“下一个值是:”+iter.Next());
iter.remove();
}
}
No,您不能更改条件本身,但可以调用break
停止执行循环。或者,您可以将listSize
更改为其他内容以减少执行长度,但这是一种不好的做法。@Kon这是一个答案,不是注释。这样做并获得upvots/acceptNo,您不能更改条件本身,但可以调用break
停止执行循环。或者,您可以将listSize
更改为其他内容以减少执行长度,但这是一种不好的做法。@Kon这是一个答案,不是注释。我的程序的真正目标是,我必须将列表中的项目相互比较,以便将它们组合在一起打印。这只是我关于如何做的第一个想法。(我对for循环条件部分也很好奇)我程序的真正目标是,我必须将列表中的项目相互比较,以便将它们组合在一起打印。这只是我关于如何做的第一个想法。(我对for循环条件部分也很好奇)