您的位置:首页 > 产品设计 > UI/UE

黑马程序员 自学09C#编程基础之break continue 枚举

2014-04-09 23:18 465 查看
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------

Break

2014/3/30

用于循环中,退出当前循环。经常和if配合使用。

Break:

1. 可以用于switch-case判断中,用于跳出switch;

2. 用在循环中,立即跳出循环。

注意:用于循环中,跳出的是break所在的循环。

Continue

立即结束本次循环后↓(如果是for循环,continue是执行完i++之后再结束循环)

判断循环条件。

若条件为true→进入下一次循环,false→退出循环。

Continue:

于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不再执行continue后面的语句),直接进行下一次循环:

1. while/do-while 直接进行下一次循环条件的判断:true→再次进入循环。

2. for,先执行表达式3(变量改变 i++),再判断循环条件。

小结

顺序结构:语句顺序执行(由上至下)

分支结构:语句在满足条件下执行:

If if-else if-else if switch-case 表一?表二:表三(三元表达式)←可以替换(if-else)结构

eg:

int a=10,b=20;

if(a>b)

Console.WriteLine(a);

Else

Console.WriteLine(b);

用三元表达式写成:

Int max=a>b?a:b;//(=bool?true:false)

Console.WriteLine(max);

循环结构:语句在满足条件下循环执行多次。

While do-while for

此上为程序中的三种结构(Java C# C++)

跳转语句:

Break;

Continue;

Goto:(不建议使用)goto可跳入标签和跳出嵌套循环(→跳出循环可以用flag标签替代)

常量

常量:(不可改变的变量)解决日后修改时大量的重复工作,便利。防止对数值进行恶意篡改。(防止团队开发,对常量赋值)

语法:

Const 类型 常量名 = 常量值;

const double PI = 3.14 ;

除了在初始化的时候,其他时候不允许对常量赋值。

在定义时赋值,在其他地方不允许赋值。

枚举(穷举法)

1. 限制用户赋值

2. 赋值时提醒用户

让我们定义一种枚举类型,并且在定义这种类型时我们要指定这个类型的所有值。

语法:

enum(枚举) 自己起的类型名称 {}(里面写值1,值2…值N)

枚举的定义:

一般和类定义在同一个级别,这样在同一个命名空间下的所有的类就都可以使用这个枚举。

(在方法/类中写枚举都可以)

eg:

namespace……

enum Gender(自己定义的一个枚举类型名称)

{

男,



}

Class……

{

Staticvoid Main(string[]args)

{

Gender sex;(定义一个变量,就像inta;)

sex = Gender.男;(只能赋值,值1/值2/值N,类似a=…;)

Console.WriteLine(sex);

……

}

}

变量 = 类型名 . 值N(空格+类型名+ . +值N)

Sex = Gender . 女;

作用:

1. 可以限制用户对这个变量(枚举定义的类型名称Gender所定义的变量sex)的赋值只能是枚举中已有的值(男,女),不能是其他的值。这样可以保证赋值的统一性。

2. 当这个变量(sex)取值特别多的时候,用户不需要记住每个值的写法和名称,只需要把这个枚举类型+ . (eg:Gender.女)就能写出这个值。

注意:

定义枚举时,值不能是int类型。

枚举类型的变量都可以强制转换成一个int类型。

eg:

Gender sex;

Sex = Gender.男;

Console.WriteLine((int)sex);

Console.ReadKey();

F5→结果显示:0

枚举的值在定义时是有一个默认编号的,编号从“0”开始。

如果让第一个值=1:

enmu Gender

{

男=1,



}

这样,从第一个等于1,后面陆续+1。女=2

但是如果:

{

男,

女=0

}

这样写不会报错,但不可以这样写。

交互界面赋值方法:

Gender sex;

Console.WriteLine(“请输入你的性别”);

string s=Console.ReadLine();

try

{

Sex=(Gender)(Enum.Parse(typeof(Gender),s));

}

Catch

{

}

如何把一个字符串转换成枚举类型:

(自枚)(Enum.Parse(typeof(自枚),待转换的字符串));

自定义的枚举类型也叫做变量类型名。(与int double类似)

用户输入后转换要有try-catch。

练习:

练习一:
#region for 练习一
Console.WriteLine("请输入要计算到哪个数的偶数和");
Console.Write("数字:");
int number = Convert.ToInt32(Console.ReadLine());
int sum = 0, numberA = 1;//i=0;绿字为曾犯的错。
for (  /*i=0*/numberA = 1;/*i<number*/ numberA < number;/*i++*/ numberA++)
{
if (numberA % 2 == 0)
{
sum += numberA;
//numberA++;
}
}
Console.WriteLine(sum);
Console.ReadKey();

#endregion


练习二:水仙花数


#region 练习二 疑问,为啥最后有两个153?
int number3 = 1, number2 = 0, number1 = 0;//从100开始。
int i = 0;
//sum = number1 * number1 * number1 + number2 * number2 * number2 + number3 * number3 * number3;
for (i = 1; i <= 900; i++)//i=1,所以1~900=900个数
{
//i++;

if (i < 10)
number1++;//个位数 0+9
else if (i < 100)//两位数 98%10=个位数。90/10 int类型=十位数。
{
number1 = i % 10;
number2 = i / 10;
//下面是笨拙错误的算法。
//if (number1 >= 10)//如果个位数累计加=10,直接取余清空个位数并重新给它赋值
//{
//    number1 %= 10;
//    if (number1 == 0)//个位数加到十,十位数累计+1
//        number2++;
//}

}
else//三位数时候,百位数=500/100,十位数=888/10再%10,个位数直接896%10.
{
number3 = i / 100;
number2 = (i / 10) % 10;
number1 = i % 10;

}
if (number1 * number1 * number1 + number2 * number2 * number2 + number3 * number3 * number3 == number3 * 100 + number2 * 10 + number1)
Console.WriteLine("{0}{1}{2}", number3, number2, number1);
}
Console.ReadKey();

//简化
//number1 =i%10;
//number2=i/10%10;
//number3=i/100;

#endregion
练习三:9×9
#region 练习三
// 1X1  2X1……
// 2X1  2X2……
// 3X1  3X3……
int n = 1, i = 1, ji = 0;
for (i = 1; i <= 10; i++)
{
if (i <= 9 && n <= 9)//1 X 9 2X2 3X2 这个是持续到九的循环
{
ji = n * i;
Console.Write("{0}*{1}={2}\t", n, i, ji);
}

if (i >= 10 && n < 9)//2 X 1 3X1 4X1 这个是转换到更大的阶乘,输出1X?第一个式子后就跳出
{
i = 1;
n++;

ji = n * i;
//Console.WriteLine("");
Console.Write("\n{0}*{1}={2}\t", n, i, ji);
}

}

Console.ReadKey();
//第二种方法
//int i=1,n=1;
//for (i = 1; i <= 9; i++)
//{
//    for (n=1; n <= 9; n++)
//    {
//        Console.Write("{0}*{1}={2}\t",n,i,n*i);
//        if (n == 9)
//            Console.Write("\n");//Console.WriteLine("");
//    }
//}
//Console.ReadKey();

Console.WriteLine("第二种表");
1X1 、1X1 1X2 、1X1 1X2 1X3……

int i = 1, n = 1, ji = 0;
for (n = 1; n < 10; n++)
{
i = 1;
while (i <= n && n <= 9)
{
ji = i * n;
Console.Write("{0}*{1}={2}\t", i, n, ji);
i++;
}
Console.Write("\n");//Console.WriteLine("");
//i = 1;犯过的错误
//if (n == 10)
//    Console.ReadKey();
};
Console.ReadKey();
//第二种方法
//int i = 1, n = 1;
//for (i = 1; i <= 9; i++)
//{
//    for (n = 1; n <= i; n++)
//    {
//        Console.Write("{0}*{1}={2}\t", n, i, n * i);
//        if (n == i)
//           Console.Write("\n");//Console.WriteLine("");
//    }
//}
//Console.ReadKey();

#endregion
练习四:打印菱形
Console.WriteLine("请输入◇的行数:");
Console.Write("行数:");
int rows = Convert.ToInt32(Console.ReadLine());
int i = 1, n = 1;
int rows1 = rows / 2 + 1;
for (i = 1; i <= rows1; i++)
{
for (; n <= rows1 - i; n++)
{
Console.Write(" ");
}
n = 1;
for (; n <= 2 * i - 1; n++)
{
Console.Write("*");
}
n = 1;
Console.Write("\n");
}
for (i = 1; i < rows1; i++)
{
for (; n <= i; n++)
{
Console.Write(" ");
}
n = 1;
for (; n <= rows - 2 * i; n++)
{
Console.Write("*");
}
n = 1;
Console.Write("\n");
}
Console.ReadKey();

//网友版本
//Console.Write("请输入要打印的行数(奇数):");
//int n = int.Parse(Console.ReadLine()) / 2 + 1; //这样就算出上部分的总行数了

//for (int i = 1; i <= n; i++)
//{
//    for (int j = 1; j <= n - i; j++)
//    {
//        Console.Write(" ");
//    }
//    for (int k = 1; k <= 2 * i - 1; k++)
//    {
//        Console.Write("*");
//    }
//    Console.WriteLine();
//}

//for (int i = 1; i < n; i++)
//{
//    for (int j = 1; j <= i; j++)
//    {
//        Console.Write(" ");
//    }
//    for (int k = 1; k <= (2 * n - 1) - 2 * i; k++)
//    {
//        Console.Write("*");
//    }
//    Console.WriteLine();
//}
//Console.ReadKey();


练习五:循环练习
#region for循环

int six = 0, i = 0, n = 7;
for (i = 0; i < 7; i++)
{
six = i + --n;
if (six == 6)
Console.WriteLine("{0}+{1}={2}", i, n, six);//这个number=(number-i)+i;
}
Console.ReadKey();

#endregion
#region 练习二 三种循环参考

bool flag = true;
string userName ="a",password="b";
Console.WriteLine("请输入用户名和密码");
Console.Write("用户名:");
userName = Console.ReadLine();
Console.WriteLine("请输入密码");
Console.Write("密码:");
password = Console.ReadLine();
if (userName != "admin" || password != "888888")
{
while (flag)
{

Console.WriteLine("请重新输入用户名和密码");
Console.Write("用户名:");
userName = Console.ReadLine();
Console.Write("密码:");
password = Console.ReadLine();
flag=true;
if (userName == "admin" && password == "888888")
break;
}
}
Console.WriteLine("欢迎回来!");
Console.ReadKey();

do
{
Console.WriteLine("请输入用户名");
Console.Write("用户名:");
userName = Console.ReadLine();
Console.WriteLine("请输入密码");
Console.Write("密码:");
password = Console.ReadLine();
if (userName == "admin" && password == "888888")
break;
}
while (flag);
Console.WriteLine("欢迎回来!");
Console.ReadKey();

for (;flag;)
{
Console.WriteLine("请输入用户名");
Console.Write("用户名:");
userName = Console.ReadLine();
Console.WriteLine("请输入密码");
Console.Write("密码:");
password = Console.ReadLine();
if (userName == "admin" && password == "888888")
break;
}
Console.WriteLine("欢迎回来!");
Console.ReadKey();

#endregion

#region 练习三
int i = 1, sum = 0;
for (; i <= 100; i++)
{
sum = sum + i;

if (sum >= 20)
{
Console.WriteLine(i);
break;
}

}
Console.ReadKey();

#endregion


练习六:
#region 练习一
//下面这个写法是可以循环输入五个数,并循环输出平均数。
int age = 0, i = 1, average = 0, age1 = 0;
Console.WriteLine("请输入要计算的第{0}个人的年龄", i);
Console.Write("年龄:");
age = Convert.ToInt32(Console.ReadLine());
while (age <= 100 && age >= 0 && age1 <= 100 && age1 >= 0)
{
do//do-while是为了把第一位年龄计算进去。
{
age += age1;
i++;
if (i == 6)//第五位也就是上面没有赋值的第六位
{
average = age / (i - 1);
Console.WriteLine(average);
i = 1;//计算完毕后开始将记位数i和年龄age清空
average = 1;
age = age1 = 0;
}

Console.WriteLine("请输入要计算的第{0}个人的年龄", i);
Console.Write("年龄:");
age1 = Convert.ToInt32(Console.ReadLine());//检测从第二个人开始的年龄是否规范。
}
while (age1 <= 100 && age1 >= 0 && i <= 5);//下面是两个分开的循环,上面可以合在一起。
//while (i == 5 && age1 <= 100 && age1 >= 0)//第五位计算完毕后开始将记位数i和年龄age清空
//{
//    age += age1;
//    average = age / i;
//    Console.WriteLine(average);
//    i = 0;
//    average = 0;
//    age = age1 = 0;
//}
}
Console.WriteLine("Error!!");
Console.ReadKey();

////写法二 只能一次性
//int age = 0, i = 1, sum = 0;
//bool flag = false;
//for (i = 1; i <= 5; i++)
//{
//    Console.WriteLine("请输入第{0}个人的年龄:", i);
//    try
//    {
//        age = Convert.ToInt32(Console.ReadLine());
//        if (age <= 0 || age > 100)
//        {
//            flag = true;
//            Console.WriteLine("年龄有误!");
//            break;
//        }
//        sum += age;
//    }
//    catch
//    {
//        flag = true;
//        Console.WriteLine("Error!!");
//        break;
//    }
//}
//if (flag == false)//if(i==6);这个不考虑try-catch
//    Console.WriteLine("刚刚输入的五个年龄平均数为:{0}", sum / (i - 1));
//Console.ReadKey();

#endregion


练习七:
#region 练习一
Console.WriteLine("请输入要从1计算到的数字:");
Console.Write("数字:");
int number = Convert.ToInt32(Console.ReadLine());
int i = 0, sum = 0;
for (; i <= number; i++)//从0加到输入的数字
{
//sum+=i;  这个在前面就使continue没意义。
if (i % 7 == 0)//如果该数是七的倍数,则continue,i++;
continue;
sum += i;

}
Console.WriteLine(sum);
Console.ReadKey();

#endregion


练习八:
int a = 10, b = 50;
//三元表达式
Console.WriteLine(a > b ? a : b);
Console.ReadKey();

const double PI = 3.1415926;
//PI = 2;pi是一个常量,未初始化之前不能赋值。
Console.WriteLine("请输入一个数字");
double number = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(PI == 3.1415926 ? PI : number);//true→PI,false→number;
Console.ReadKey();
练习九:
namespace _12自学第十二天
{
enum fayeWong
{
王菲
}

class Program
{
static void Main(string[] args)
{
fayeWong love;
love = fayeWong.王菲;
Console.WriteLine((int)love);
Console.ReadKey();

fayeWong fever;
Console.WriteLine("请输入当代华语歌坛真正的天后");
Console.Write("她的名字是:");
while (true)
{
try
{

string love = Console.ReadLine();//如何把一个字符串转换成枚举类型
// 变量名称=(自己定义的枚举类型)(Enum.Prase(typeof(自己定义的枚举类型),要转换的字符串));
fever = (fayeWong)(Enum.Parse(typeof(fayeWong), love));
if (love == "王菲")
{
Console.Write(love);
break;
}
}
catch
{
Console.WriteLine("你要写的人她不够格哦!");
Console.WriteLine("请输入当代华语歌坛真正的!!!天后");
}
}
Console.ReadKey();

//把字符串转换成枚举类型:(变量)=(自定义枚举类型)(Enum.Parse(typeof(自定义枚举类型),要转换的字符串));
//三元表达式:(bool类型的表达式)?(ture输出的值):(false输出的值); a>b?a:b;
//定义一个常量 const 数据类型+变量名称=常量值;
// enum fayeWong;
// {
//  王=2,菲//(==3)
// }
//…………fayeWong love; love= fayeWong.菲/王;………………
//…………string love1=Console.ReadLine();
//love1=(fayeWong)(Enum.Parse(typeof(fayeWong),love1));
//………………


-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐