天天看点

黑马程序员——.NET自学笔记4_流程控制

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------

if结构

if (条件true/false)
    单一语句;// 条件为true时,只执行这一句,后面如果还有语句,与if结构无关
           

即使只有单一语句需要执行,也建议加{}

if (条件true/false)
{
    语句块...// 条件为true时,执行{}内所有语句,{}后面的语句,与if结构无关
}
           
if  (条件true/false)
{
    语句块...// 条件为true时,执行if{}内所有语句,else{}的语句不执行
}
else
{
    语句块...// 条件为false时,不执行if{}内语句,执行else{}中的语句
}
           

关于条件语句

int a = 30;
//if (10 < a < 50) //错误	运算符“<”无法应用于“bool”和“int”类型的操作数
if (10 < a && a < 50) 
{
    Console.WriteLine("a的值在10和50之间");
}
Console.ReadKey();
           
if  (条件1 true/false)
{
    语句块...// 条件1为true时,执行if{}内所有语句,后面的语句不执行
}
else if (条件2 true/false)
{
    语句块...// 条件1为false且条件2为true时,执行else if{}中的语句,不执行其它内语句
}
else
{
    语句块...// 条件1和2都为false时,执行else{}中的语句,不执行其它内语句
}
           

switch-case语句

Console.WriteLine("请输入ABCDE:");
string input = Console.ReadLine();
//char input = Console.ReadLine();//错误	无法将类型“string”隐式转换为“char”
switch (input)
{
    case "A":
        Console.WriteLine("输入了A");
        break;
    case "B":
        Console.WriteLine("输入了B");
        break;
    case "C":
        Console.WriteLine("输入了C");
        break;
    case "D":
        Console.WriteLine("输入了D");
        break;
    case "E":
        Console.WriteLine("输入了E");
        break;
    default:
        Console.WriteLine("输入有误,只能输入ABCDE");
        break;
                    
}
Console.ReadKey();
           

switch-case 与 if-else if 的区别:

相同点:都可以实现多分支结构;

不同点:switch-case 只能用于等值比较,if-else if 可以处理范围

//输入年和月,输出当月天数
Console.WriteLine("请输入年份:");
int year = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入月份:");
int month = Convert.ToInt32(Console.ReadLine());

switch(month)
{
    case 1:
    case 3:
    case 5:
    case 7:
    case 9:
    case 11:
        Console.WriteLine("31天");
        break;
    case 2:
        if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
        {
            //是闰年
            Console.WriteLine("29天");
        }
        else
        {
            Console.WriteLine("28天");
        }
        break;
    default:
        Console.WriteLine("30天");
        break;
}
Console.ReadKey();
           

while循环

int i = 0;//定义循环变量
while (i < 5)//循环条件、循环次数
{
    Console.WriteLine("重复做的事情");
    i++;//改变循环变量的值,千万不要忘记写
}
           

do-while循环

int i = 0;
do
{
    Console.WriteLine("循环{0}次",i+1);
    i++;
} while (i<5); //当while条件值为true时,继续循环,直到其值为 false 值。
           

当while条件值为true时,继续循环, 直到其值为 false 时中止循环。

while循环 先判断,再循环。 先判断是否需要循环

do-while  先循环,再判断。 先执行一次后判断是否需要继续循环

for循环    明确知道需要循环,for循环都可以改成while循环形式

int a = 0, max = 0;
string s;
do
{
    Console.WriteLine("请输入一个数:");
    s = Console.ReadLine();
    if (s == "end")
    {
        continue;
    }
    try
    {
        a = Convert.ToInt32(s);//假定不会输入数字和end以外的字符
        //Console.WriteLine("in try");
    }
    catch
    {
        Console.WriteLine("只能输入数字或end");
        //Console.WriteLine("in catch");
        continue;
    }
    max = (max > a) ? max : a;
} while (s != "end");
Console.WriteLine("输入的最大数是"+max);
           

for循环与while循环对比:

int length = 10;
            
int i = 0;
while (i < length)
{
    Console.WriteLine("while循环");
    i++;
}

for (int j = 0; j < length; j++)
{
    Console.WriteLine("for循环");
}

Console.ReadKey();
           

循环的嵌套

Console.WriteLine("九九乘法表");
for (int i = 1; i < 10; i++)
{
    for (int j = 1; j <= i ; j++)// j<=i 保证每一行输出到相同数字相乘时就停止
    {
        //Console.Write(i+"*"+j+"="+i*j+"\t");
        Console.Write("{0}*{1}={2}\t",i,j,i*j);//用Write()避免每个算式后都换行,插入Tab分隔算式
    }
    Console.WriteLine("");//一行Write()完,输出一个换行
}
Console.ReadKey();
           

跳转语句

break; 用于终止最近的封闭循环或它所在的 switch 语句,继续运行终止语句后面的语句(如果有的话)。

for (int i = 1; i <= 100; i++)
{
    if (i == 5)
    {
        break; //当i==5成立时,循环中止并跳出,不会继续进行下次循环,i值不会再自增。
    }
    Console.WriteLine(i);
}
           
for (int x = 0; x < 10; x++)            // 外层循环
{
    Console.WriteLine("num = {0}", x);
    for (int y = 0; y < 5; y++)         // 内层循环
    {
        if (y == x)
        {            
            break;                      // 中止并跳出内层循环,继续执行外层循环
        }
        Console.Write(" {0} ", y);
    }
    Console.WriteLine();
}
Console.ReadKey();
           

在switch-case中为固有语句。

continue;将控制权传递给它所在的封闭迭代语句的下一次迭代。

for (int i = 1; i <= 10; i++)
{
    if (i < 9)
    {
        continue;  //当i<9时,continue中止本次循环,跳过 continue 和 for 循环体末尾之间的语句,直接转到i++进入下一次循环。
    }
    Console.WriteLine(i);
}
           

goto; 不推荐使用,一般用于跳转到switch-case特定标签,或用于跳出深层嵌套

int cost = 0;
switch (n)
{
   case 1:
       cost += 25;
       break;
   case 2:
       cost += 25;
       goto case 1;
   case 3:
       cost += 50;
       goto case 1;
   default:
        Console.WriteLine("Invalid selection.");
        break;
}
           
for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < y; j++)
        {
            if (array[i, j].Equals(myNumber))
            {
                goto Found;
            }
        }
    }

    Console.WriteLine("The number {0} was not found.", myNumber);
    goto Finish;

Found:
    Console.WriteLine("The number {0} is found.", myNumber);

Finish:
    Console.WriteLine("End of search.");
           

三元运算符 ? : 

(式1) ? (式2) : (式3)

(式1)为条件判断语句,值为bool值true或false,当值为true,整个表达式取(式2)的值,否则取(式3)的值。

int a = 5, b = 8;
int c = a >= b ? a : b ;
Console.WriteLine(c);
Console.ReadKey();
           

流程控制

分支语句

if    、   if-else    、  if-else if    、    switch-case   、     ?:

循环语句

while  、  do-while   、  for

跳转语句

break  、  continue   、  goto   

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

继续阅读