黑马程序员 自学09C#编程基础之break continue 枚举
2014-04-09 23:18
465 查看
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
用于循环中,退出当前循环。经常和if配合使用。
Break:
1. 可以用于switch-case判断中,用于跳出switch;
2. 用在循环中,立即跳出循环。
注意:用于循环中,跳出的是break所在的循环。
判断循环条件。
若条件为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 ;
除了在初始化的时候,其他时候不允许对常量赋值。
在定义时赋值,在其他地方不允许赋值。
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 . 女;
2. 当这个变量(sex)取值特别多的时候,用户不需要记住每个值的写法和名称,只需要把这个枚举类型+ . (eg:Gender.女)就能写出这个值。
枚举类型的变量都可以强制转换成一个int类型。
eg:
Gender sex;
Sex = Gender.男;
Console.WriteLine((int)sex);
Console.ReadKey();
F5→结果显示:0
枚举的值在定义时是有一个默认编号的,编号从“0”开始。
如果让第一个值=1:
enmu Gender
{
男=1,
女
}
这样,从第一个等于1,后面陆续+1。女=2
但是如果:
{
男,
女=0
}
这样写不会报错,但不可以这样写。
Console.WriteLine(“请输入你的性别”);
string s=Console.ReadLine();
try
{
Sex=(Gender)(Enum.Parse(typeof(Gender),s));
}
Catch
{
}
如何把一个字符串转换成枚举类型:
(自枚)(Enum.Parse(typeof(自枚),待转换的字符串));
自定义的枚举类型也叫做变量类型名。(与int double类似)
用户输入后转换要有try-catch。
练习二:水仙花数
练习五:循环练习
练习六:
练习七:
练习八:
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
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培训、期待与您交流! -------
相关文章推荐
- 黑马程序员 自学0304C#编程基础之类型的转换与转型
- 黑马程序员之C#编程基础学习笔记:用while continue实现计算1到100之间的除了能被7整除之外所有整数的和。
- 黑马程序员 c#基础之break continue语句
- 黑马程序员 自学05C#编程基础之关系运算符与逻辑运算符
- 黑马程序员 自学02C#编程基础之变量
- 黑马程序员 自学01C#编程基础之基本概念
- 黑马程序员 自学14C#编程基础之方法重载与out
- 黑马程序员之C#编程基础学习笔记:用while计算1到100之间整数的和;
- 黑马程序员--c#中break_continue_return__goto_throw的区别
- 黑马程序员之C#学习笔记:break和continue的区别const与readonly的区别form与control的区别
- (C# 基础) 跳转 (break, continue, goto, return, throw ).
- 黑马程序员之C#编程基础学习笔记:要求用户输入用户名和密码,只要不是admin,888888就一直提示要求重新输入。
- 黑马程序员_看视频记笔记_C#编程基础01
- 黑马程序员--C#编程基础
- C#基础系列问题一break、continue、return、goto语句
- 黑马程序员 自学08C#编程基础之循环复习
- 黑马程序员之C#编程基础学习笔记:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。
- 黑马程序员-基础学习之day3-day4(break和continue引发的“血案”)
- .黑马程序员之C#编程基础学习笔记:不断要求用户输入一个数字,当用户输入end的时候显示刚才输入的数字中的最大值。
- Java编程基础-----return、break、continue的理解