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

在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.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循环条件部分也很好奇)