while循环是否可以完全替代do while循环?是的话,那do while循环的意义在哪里?

baidu_38592776 2020-04-30 10:31:09
while 1:
#语句
if 退出循环条件:
break

以上语句是不是在任何情况下都可以代替do while循环呢?
...全文
1594 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
android_cai_niao 2020-05-11
  • 打赏
  • 举报
回复
do while能做的事,while也都能做,只是有些情况,使用do while会更简单罢了,打个比方,有这样一个需求:开了一个店,进来客户必须吃苹果,最少要吃一个,吃到饱为止,不吃饱不给走(霸气!!),代码如下:

do {
     吃一个苹果;
} while (没吃饱);
这个代码应该能懂吧,一进来,不管你饱不饱,必须先吃一个,再问你饱没饱,饱了就不能吃了,不饱就要接着吃。如果用while来实现也可以,只是麻烦一些,如下:

boolean 是第一次吃 = true;
while(是第一次吃 || 没吃饱) {    
    吃一个苹果;
    是第一次吃 = false;
}
看到了吧,while也能实现一样的功能,但是代码是不是变多了,也没那么简洁了!!
qq_39936465 2020-05-09
  • 打赏
  • 举报
回复
引用 楼主 baidu_38592776 的回复:
while 1: #语句 if 退出循环条件: break 以上语句是不是在任何情况下都可以代替do while循环呢?
主要是有时候do while看上去程序更简洁,举个例子

 int i=0
  do {
     i++;		
     }while(i!=0);
如果套用while来实现的话,看上去写了2次i++

int i=0;
i++;
while(i!=0) {
	i++;
}
南忆K 2020-05-08
  • 打赏
  • 举报
回复
编程本来就是许多写法可以相互转换的,主要还是要看你业务逻辑用哪一个更合适
CS-Polaris 2020-05-01
  • 打赏
  • 举报
回复
引用 4 楼 sotondolphin 的回复:
do while 至少会执行一次
while 可能一次都不会执行

那这个根本意义就在于,先执行再判断循环条件,还是先判断循环条件再执行,可能根据事物的不同来区分吧
sunyiz 2020-04-30
  • 打赏
  • 举报
回复
甚至for循环,在特定的写法下都能替代 while 和 do while

较符合 do while 的形式:
for (;;) {
#语句
if 退出循环条件:
break;
}

较符合 while 的形式:
for (;;) {
if 退出循环条件:
break;
#语句
}
sunyiz 2020-04-30
  • 打赏
  • 举报
回复
比如你主楼的例子,反过来也一样

do {
if 退出循环条件:
break;
#语句
}while(true);

也可以完全替代 while
sunyiz 2020-04-30
  • 打赏
  • 举报
回复
while 是在做本次循环之前,先判断一个条件
do while 是做完本次循环之后,判断一个条件
也就是说 do while 无论如何都会执行一次其中的内容
而 while 则不一定

如果从结构上来说,两者都可以通过写法和逻辑处理,完全替代对方
如何选择,关键是看哪种写法更有助于自己对这一段逻辑的理解,哪种写法在当前状况下更方便
sotondolphin 2020-04-30
  • 打赏
  • 举报
回复
do while 至少会执行一次 while 可能一次都不会执行
C代码优化方案 目录 目录__ 2 C代码优化方案__ 4 1、选择合适的算法和数据结构__ 4 2、使用尽量小的数据类型__ 5 3、减少运算的强度__ 5 (1)、查表(游戏程序员必修课)_ 5 (2)、求余运算__ 6 (3)、平方运算__ 6 (4)、用移位实现乘除法运算__ 6 (5)、避免不必要的整数除法__ 8 (6)、使用增量和减量操作符__ 8 (7)、使用复合赋值表达式__ 8 (8)、提取公共的子表达式__ 9 4、结构体成员的布局__ 9 (1)按数据类型的长度排序__ 10 (2)把结构体填充成最长类型长度的整倍数__ 10 (3)按数据类型的长度排序本地变量__ 10 (4)把频繁使用的指针型参数拷贝到本地变量__ 11 5、循环优化__ 12 (1)、充分分解小的循环__ 12 (2)、提取公共部分__ 13 (3)、延时函数__ 13 (4)、while循环和do…while循环__ 14 (6)、循环展开__ 14 (6)、循环嵌套__ 15 (7)、Switch语句中根据发生频率来进行case排序__ 16 (8)、将大的switch语句转为嵌套switch语句__ 17 (9)、循环转置__ 18 (10)、公用代码块__ 19 (11)提升循环的性能__ 19 (12)、选择好的无限循环__ 20 6、提高CPU的并行性__ 21 (1)使用并行代码__ 21 (2)避免没有必要的读写依赖__ 22 7、循环不变计算__ 23 8、函数__ 24 (1)Inline函数__ 24 (2)不定义不使用的返回值__ 24

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧