Java 是否可以撤消上次执行while循环?

Java 是否可以撤消上次执行while循环?,java,while-loop,Java,While Loop,以下是一个例子: int i = 0; while (i < 11) { System.out.println(i); list.add(i); i++; } arraylist对于每个索引应该有相同的值,但是如果我不想要10呢 考虑到无法修改while循环,是否可以“撤消”while循环的最后一次执行 我知道只删除arraylist的最后一个索引比较简单,但是如果执行没有撤销那么简单(就像我的相关问题一样),该怎么办 如果不可能,是否最好只修改循环条件? (对于

以下是一个例子:

int i = 0;
while (i < 11) {
    System.out.println(i);
    list.add(i);
    i++;
}
arraylist对于每个索引应该有相同的值,但是如果我不想要10呢

考虑到无法修改while循环,是否可以“撤消”while循环的最后一次执行

我知道只删除arraylist的最后一个索引比较简单,但是如果执行没有撤销那么简单(就像我的相关问题一样),该怎么办


如果不可能,是否最好只修改循环条件?
(对于与此不同的问题,我一直在研究如何修改条件,因为它工作得很好,除了最后一次执行,它修改了一大堆不同的东西,这些东西不容易撤消,就像这里的简单arraylist示例一样)。

有很多方法可以防止执行10,但含义不同。。。 在每种情况下,您都必须更改代码:

样本1:

int i = 0;
while (i < 11) {
    if (i == 10) {
        continue;    //Skip this iteration
    }
    System.out.println(i);
    list.add(i);
    i++;
}
inti=0;
而(i<11){
如果(i==10){
continue;//跳过此迭代
}
系统输出打印LN(i);
列表.添加(i);
i++;
}
样本2:

int i = 0;
while (i < 11) {
    if (i == 10) {
        break;    //Exit loop completely
    }
    System.out.println(i);
    list.add(i);
    i++;
}
inti=0;
而(i<11){
如果(i==10){
break;//完全退出循环
}
系统输出打印LN(i);
列表.添加(i);
i++;
}
样本3:

int i = 0;
while (i < 11) {
    if (i != 10) {  // Only perform the below functions if i != 10
        System.out.println(i);
        list.add(i);
    }
    i++;
}
inti=0;
而(i<11){
如果(i!=10){//仅当i!=10时执行以下功能
系统输出打印LN(i);
列表.添加(i);
}
i++;
}

有很多方法可以防止执行具有不同含义的10。。。 在每种情况下,您都必须更改代码:

样本1:

int i = 0;
while (i < 11) {
    if (i == 10) {
        continue;    //Skip this iteration
    }
    System.out.println(i);
    list.add(i);
    i++;
}
inti=0;
而(i<11){
如果(i==10){
continue;//跳过此迭代
}
系统输出打印LN(i);
列表.添加(i);
i++;
}
样本2:

int i = 0;
while (i < 11) {
    if (i == 10) {
        break;    //Exit loop completely
    }
    System.out.println(i);
    list.add(i);
    i++;
}
inti=0;
而(i<11){
如果(i==10){
break;//完全退出循环
}
系统输出打印LN(i);
列表.添加(i);
i++;
}
样本3:

int i = 0;
while (i < 11) {
    if (i != 10) {  // Only perform the below functions if i != 10
        System.out.println(i);
        list.add(i);
    }
    i++;
}
inti=0;
而(i<11){
如果(i!=10){//仅当i!=10时执行以下功能
系统输出打印LN(i);
列表.添加(i);
}
i++;
}

您将始终知道数组的最后一个索引(
arrayList.size()-1
)。但简单地删除数组中的最后一项并不是“撤消”,而是一种事后修改


没有“撤消上次迭代”类型的功能。

您将始终知道数组的最后一个索引(
arrayList.size()-1
)。但简单地删除数组中的最后一项并不是“撤消”,而是一种事后修改


没有“撤消上一次迭代”类型的功能。

抱歉,但无论您使用何种语言,都不可能“撤消”一段代码的执行

但是,你可以很容易地实现你想做的事情。如果不想添加数组中的最后一个数字,只需添加一个If条件。这是我目前最好的主意

int i = 0;
int nb = 11
while (i < nb) {
    System.out.println(i);
    if(i < nb-1){
        list.add(i);
    }
    i++;
}
inti=0;
int nb=11
而(i
在这里,输出应该是相同的,但列表不包含“10”

添加后不在列表中删除 让所有数字填充数组,然后删除不需要的数字,这不是一个好主意。你做了太多的计算,如果你能避免的话,就去做(测试代码比在列表中添加数字要快)

变回路条件 正如您所说,如果您也不想打印最后一个数字,您可以更改循环条件。因为在我的例子中,你有两个完全相同的测试。这个例子有点没用,也许你想要更复杂的代码


我希望我的回答正确!:)

对不起,无论您使用何种语言,都无法“撤消”代码的执行

但是,你可以很容易地实现你想做的事情。如果不想添加数组中的最后一个数字,只需添加一个If条件。这是我目前最好的主意

int i = 0;
int nb = 11
while (i < nb) {
    System.out.println(i);
    if(i < nb-1){
        list.add(i);
    }
    i++;
}
inti=0;
int nb=11
而(i
在这里,输出应该是相同的,但列表不包含“10”

添加后不在列表中删除 让所有数字填充数组,然后删除不需要的数字,这不是一个好主意。你做了太多的计算,如果你能避免的话,就去做(测试代码比在列表中添加数字要快)

变回路条件 正如您所说,如果您也不想打印最后一个数字,您可以更改循环条件。因为在我的例子中,你有两个完全相同的测试。这个例子有点没用,也许你想要更复杂的代码


我希望我的回答正确!:)

您可以为每个操作定义如何撤消它

list.add(i)
可以使用
list.remove(list.size()-1)撤消

其他操作(如发送邮件)更难撤消,但您可以延迟邮件的实际发送,以便用户有机会取消它


从某种意义上讲,这与do
ctrl-z
非常相似,因为文字处理器也不能神奇地撤销您的操作,必须定义如何撤销它。

您可以为每个操作定义如何撤销它

list.add(i)
可以使用
list.remove(list.size()-1)撤消

其他操作(如发送邮件)更难撤消,但您可以延迟邮件的实际发送,以便用户有机会取消它


从某种意义上讲,这与do
ctrl-z
非常相似,因为文字处理器也不能神奇地撤消您的操作,它必须定义如何撤消它。

如果循环的最后一次执行调用
launchNukes()
,您能撤消循环的最后一次执行吗?“如果不可能,只修改循环条件是否更好?”