这是一个非常主观的问题,所以我会更具体。有没有时间do-while循环比正常的while循环更好的编码风格?
e.g。
int count = 0;
do {
System.out.println("Welcome to Java");
count++;
} while (count < 10);`
在评估do语句(也就是强制do语句至少运行一次)后检查while条件似乎没有意义。
对于像我上面这样简单的例子,我会想:
int count = 0;
while(count < 10) {
System.out.println("Welcome to Java"); count++;
}
通常认为是以更好的写作风格写成的。
有人能为我提供一个工作示例,说明什么时候将do-while循环视为唯一/最佳选择?你的代码中有do-while循环吗?它起什么作用?你为什么选择do-while循环?
(我很清楚,do-while循环可能会用于编码游戏。如果我错了,请纠正我,游戏开发者!)
答案 0 :(得分:4)
如果要从网络套接字读取数据直到找到字符序列,首先需要读取数据,然后检查转义序列的数据。
do
{
// read data
} while ( /* data is not escape sequence */ );
答案 1 :(得分:4)
while
语句在特定条件为真时继续执行语句块
while (expression) {
statement(s)
}
do-while
在循环的底部计算它的表达式,因此,do块中的语句总是至少执行一次。
do {
statement(s)
} while (expression);
现在谈谈功能差异,
while-loops
由条件分支指令组成,例如if_icmpge或if_icmplt和goto语句。条件指令在循环之后立即将执行分支到指令,因此如果不满足条件则终止循环。循环中的最后一条指令是一个goto,它将字节代码分支回循环的开头,确保字节代码保持循环,直到满足条件分支。
Do-while-loops
也非常类似于for循环和while循环,除了它们不需要goto指令,因为条件分支是最后一条指令,并且用于循环回到开头
do-while循环总是至少运行一次循环体 - 它会跳过初始条件检查。由于它会跳过第一次检查,因此一个分支将会减少,而一个分支的条件将减少一个。
通过使用do-while
,如果表达式/条件很复杂,则可以获得性能,因为确保循环至少一次。在那种情况下do-while could call for performance gain
非常令人印象深刻的发现, http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne.html#while_loop
答案 2 :(得分:1)
简单地说,如果您想先检查条件然后执行操作while
是更好的选择,如果您想要执行至少一次操作,然后检查条件{{1更好。
根据你的问题,一个工作的例子,
的 1。当我需要来找到可以在同一个类或超类或超类的超类中声明的do-while
等等,即找到位于深层次结构中的字段。 (field
A extends B
等等)
B extends C
<强> 2。从public Field SearchFieldInHierarchy(Object classObj, String fieldName )
{
Field type = null;
Class clz = classObj.getClass();
do
{
try
{
type = clz.getDeclaredField(fieldName);
break;
} catch (NoSuchFieldException e)
{
clz = clz.getSuperclass();
}
} while(clz != null || clz != Object.class);
return type;
}
响应
Http
答案 3 :(得分:1)
do-while循环基本上是while循环的反转版本。
它第一次无条件地执行循环语句。
然后它再次计算在执行语句之前指定的条件表达式。
int sum = 0;
int i = 0;
do
{
sum += ids[i];
i++;
} while (i < 4);
答案 4 :(得分:1)
/ * while循环
5块钱
1巧克力= 1美元
while my money is greater than 1 bucks
select chocolate
pay 1 bucks to the shopkeeper
money = money - 1
end
来到家里,不能去购物,因为我的钱= 0美元 * /
#include<stdio.h>
int main(){
int money = 5;
while( money >= 1){
printf("inside the shopk and selecting chocolate\n");
printf("after selecting chocolate paying 1 bucks\n");
money = money - 1 ;
printf("my remaining moeny = %d\n", money);
printf("\n\n");
}
printf("dont have money cant go inside the shop, money = %d", money);
return 0;
}
无限金钱
while( codition ){ // condition will always true ....infinite loop
statement(s)
}
请访问此视频以便更好地理解 https://www.youtube.com/watch?v=eqDv2wxDMJ8&t=25s
答案 5 :(得分:0)
如果循环条件只能在循环的第一步之后知道(当您在进入循环之前不想要条件时)。 典型地:
do {
expr = ...;
while (expr);
答案 6 :(得分:0)
你自己回答这个问题 - 当它需要至少运行一次时,以这种方式阅读是有意义的。
答案 7 :(得分:0)
do - while循环允许您确保在进入迭代之前至少执行一次代码。
答案 8 :(得分:0)
在while
循环中,在循环中执行代码之前测试条件。在do while
循环中,代码在测试条件之前执行,导致代码始终至少执行一次。例如:
$value = 5;
while($value > 10){
echo "Value is greater than 10";
}
以上内容永远不会输出任何内容。如果我们再次这样做:
$value = 5;
do{
echo "Value is greater than 10";
}while($value > 10)
它将输出Value is greater than 10
,因为在执行循环后测试条件。在此之后它不会输出任何进一步的东西。
答案 9 :(得分:0)
do-while和while之间的区别在于do-while在循环的底部而不是顶部计算它的表达式。因此,do块中的语句总是至少执行一次。
例如,请检查此链接:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html
答案 10 :(得分:0)
当您必须重复检查条件并且仅在条件满足时执行循环
时,请使用while语句while(condition) //eg. a>5
{
Body of Loop
}
在Do-While语句中,程序将执行一次循环体,然后检查语句是否为真
do
{
Body of Loop
}
while(condition); //eg. a>5
答案 11 :(得分:0)
区分两者非常简单。让我们先进行While循环。
while循环的语法如下:
// expression value is available, and its value "matter".
// if true, while block will never be executed.
while(expression) {
// When inside while block, statements are executed, and
// expression is again evaluated to check the condition.
// If the condition is true, the while block is again iterated
// else it exists the while block.
}
现在,让我们进行do-while循环。 do-while的语法不同:
// expression value is available but "doesn't matter" before this loop, & the
// control starts executing the while block.
do {
// statements are executed, and the
// statements is evaluated and to check the condition. If true
// the while block is iterated, else it exits.
} while(expression);
下面给出了一个示例程序来使这个概念更清楚:
public class WhileAndDoWhile {
public static void main(String args[]) {
int i = 10;
System.out.println("While");
while (i >= 1) {
System.out.println(i);
i--;
}
// Here i is already 0, not >= 1.
System.out.println("do-while");
do {
System.out.println(i);
i--;
} while (i >= 1);
}
}
编译并运行该程序,区别显而易见。