我已经用Java编程了几年了,但是最近我刚回到学校获得了正式学位。得知我在上一次作业中因使用如下所示的循环而丢了积分,我感到非常惊讶。
do{
//get some input.
//if the input meets my conditions, break;
//Otherwise ask again.
} while(true)
现在,对于我的测试,我只是在扫描一些控制台输入,但是我被告知不鼓励这种循环,因为使用break类似于goto,我们只是不这样做。
我完全了解gotoJava
及其表亲的陷阱break:label
,并且我有很好的意识不使用它们。我还意识到,一个更完整的程序可以提供其他一些逃生方法,例如只是结束程序,但这不是我的教授所引用的原因,所以…
这有什么错do-while(true)
?
我不会说这很糟糕 -但同样地,我通常至少会寻找替代方案。
在我写第一件事的情况下,我几乎总是至少尝试将其重构为更清晰的内容。有时它是bool
无能为力的(或者替代方法是拥有一个变量,该变量除了指示循环的结束之外,没有其他意义,而不是一条break语句),但这至少值得一试。
作为使用break
标志比使用标志更清晰的示例,请考虑:
while (true)
{
doStuffNeededAtStartOfLoop();
int input = getSomeInput();
if (testCondition(input))
{
break;
}
actOnInput(input);
}
现在,让我们强制它使用标志:
boolean running = true;
while (running)
{
doStuffNeededAtStartOfLoop();
int input = getSomeInput();
if (testCondition(input))
{
running = false;
}
else
{
actOnInput(input);
}
}
我认为后者阅读起来更复杂:它有一个额外的else
块,actOnInput
它更加缩进,并且,如果你想弄清楚testCondition
返回时会发生什么true
,则需要仔细查看块的其余部分以检查是否存在是不是经过了else可能会出现的块是否running
已经被设置为false
与否。
该break
语句可以更清楚地传达意图,并让块的其余部分继续进行所需的操作,而不必担心较早的条件。
请注意,这与人们在一个方法中拥有多个return语句的说法完全一样。例如,如果我可以在前几行中得出方法的结果(例如,因为某些输入为空,为空或为零),那么发现直接返回该答案要比使用变量存储结果更清楚,然后是一整段其他代码,最后是一条return
语句。
在我的GUI应用程序中,我从中的嵌套函数中为赋值。 这当然会返回一个无限的LocalError。 我的问题是,为什么使用declaration关键字来解决这个问题是件坏事? 因为它实现了与相同的最终结果,即的值被更改,而不是创建一个新的局部变量;为什么这是一个坏的,或者不-蟒蛇的方法来解决这个问题?
我正在为Codewars做一个kata,它将两个数字数组相对放置。“对手”数组的平均数总是大于“codewarrior”数组,并且两个数组的长度总是相同的。我需要做的是找到获得胜利的最有效方法(codewarrior[x] 在上面,我将两个数组从最小到最大排序。然后,我有一个大的while循环来迭代“codefighter or”数组,以及两个time循环和一个if语句,每次迭代“对手”数组时,都
在下面的代码中,我试图提示用户输入一个数字,如果它小于1,则要求输入另一个正数。 在输入正数之前,它似乎一直在工作,但在给出正数后,程序将打印最终的错误消息。 输入正数后,如何阻止打印此错误消息?
只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。
编写程序时,您可能会遇到需要反复执行操作的情况。 在这种情况下,您需要编写循环语句以减少行数。 JavaScript支持所有必要的循环,以减轻编程压力。 while循环 JavaScript中最基本的循环是while循环,将在本章中讨论。 while循环的目的是只要expression为真,就重复执行语句或代码块。 表达式变为false,循环终止。 流程图 while loop流程图如下 - 语法
只要给定条件为真,Objective-C编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Objective-C编程语言中while循环的语法是 - while(condition) { statement(s); } 这里, statement(s)可以是单个语句或语句块。 condition可以是任何表达式,true是任何非零值。 当条件为真时,循环迭代。