黑马程序员技术交流社区
标题: do-while循环比较while循环优势? [打印本页]
作者: 陈晖 时间: 2013-4-29 10:15
标题: do-while循环比较while循环优势?
本帖最后由 陈晖 于 2013-5-1 08:39 编辑
这几天复习C#面向过程,看到while和do-while循环,
在想一个问题:有了while循环,为什么还要有do-while循环?
虽然说do-while循环有个特点:至少能够执行一次,
但是相对于while循环,do-while循环写得又麻烦,非常不方便,
do-while的优势在哪里?一般我们现在学习基本上都用while循环,哪些地方用do-while循环比较多?{:soso_e132:}
作者: 李君言 时间: 2013-4-29 10:26
while循环是先判断条件,在确定是否执行循环体
do-while循环是先执行循环体,才判断条件是否在继续循环
不知道你有没有看视频,上面有的
作者: 海不扬波 时间: 2013-4-29 10:28
do-while语句由关键字do和while组成,是循环语句中最典型的“先循环再判断”的流程控制结构,这个和其它2个循环语句都不相同。
do-while语句的语法格式为:
do{
循环体;
}while(循环条件);
语法说明:在do-while语句中,循环体部分是重复执行的代码部分,循环条件指循环成立的条件,要求循环条件是boolean类型,
值为true时循环执行,否则循环结束,最后整个语句以分号结束。
执行流程:当执行到do-while语句时,首先执行循环体,然后再判断循环条件,
如果循环条件不成立,则循环结束,如果循环条件成立,则继续执行循环体,循环体执行完成以后再判断循环条件,依次类推。
在实际的程序中,do-while的优势在于实现那些先循环再判断的逻辑,这个可以在一定程度上减少代码的重复,
但是总体来说,do-while语句使用的频率没有其他的循环语句高。
作者: 淡蓝色 时间: 2013-4-29 10:53
do...while循环的优势在于至少执行一次,如要取一个随机数,意味着至少要取一次,这时就可以考虑用do...while循环,当然while也可以实现,过程要稍微复杂一点
作者: 刘胜寒 时间: 2013-4-29 11:06
基本写代码一般使用while
很少用do,while
我是很少用的
有些东西要用do,while
比如说给你一个int类型然后让你统计0-9出现多少次啊这种情况用do-while比较好
int[] ans = new int[10];
int n =1898989;
while(n!=0)
{
ans[n%10]++;
n/=10;
}
如果n初始值不是零的话用 while和do while的结果都一样 但是
n是零的话,那么用while的方法就错了
用dowhile和while 只有一点细微的区别。
只能给你举这个例子了说明一下问题,其他我也想不出什么好的例子来
希望对你有帮助
作者: 张伟86 时间: 2013-4-30 12:39
本帖最后由 张伟86 于 2013-4-30 12:54 编辑
借用楼上的话:在实际的程序中,do-while的优势在于实现那些先循环再判断的逻辑,这个可以在一定程度上减少代码的重复, 这句可以从下例剖析出来,同样的结果,实现过程的逻辑性是不一样的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//老师问学生会了吗?学生说不会,老师继续讲解,直到10次讲解后学生还不会或者学生会了就放学;
//使用while处理时候:
int num = 0;
//这段代码需要重复
/////////////////////////////////////
Console.WriteLine("老师说:你会了吗?");
Console.Write("学生说:");
string str = Console.ReadLine();
/////////////////////////////////////
while (true)
{
if (str == "y")
{
Console.WriteLine("老师说:放学了!");
break;
}
else if (str == "n")
{
num++;
if (num < 11)
{
Console.WriteLine("那再讲1次吧,听好了,这可是再讲第{0}次了!", num);
}
else
{
Console.WriteLine("好吧,今天就到此结束吧,明天继续了!");
break;
}
}
//这里重复这段代码
/////////////////////////////////////
Console.WriteLine("老师说:你会了吗?");
Console.Write("学生说:");
str = Console.ReadLine();
/////////////////////////////////////
}
//使用do-while处理时候:
int num1 = 0;
do
{
//上面的重复性代码也只需要输入一遍而已,而且程序看起来很整齐
/////////////////////////
Console.WriteLine("老师说:你会了吗?");
Console.Write("学生说:");
string str1 = Console.ReadLine();
///////////////////////////////////
if (str1 == "y")
{
Console.WriteLine("老师说:放学了!");
break;
}
else if (str1 == "n")
{
num1++;
if (num1 < 11)
{
Console.WriteLine("那再讲1次吧,听好了,这可是再讲第{0}次了!", num1);
}
else
{
Console.WriteLine("好吧,今天就到此结束吧,明天继续了!");
break;
}
}
} while (true);
Console.ReadKey();
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |