首页 > 代码库 > java流程控制语句之switch和循环语句
java流程控制语句之switch和循环语句
1.switch
switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; …… default: 语句体n; break; }
格式解释:
switch表示这是switch语句
a)表达式的取值:byte,short,int,char
b)JDK5之后可以是枚举
c)JDK7之后可以是String
case后面跟的是要和表达式进行比较的值
语句体部分可以是一条或多天语句
break表示中断、结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该出的内容,和if语句的else相似
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项:
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。
default可以省略,一般不建议。
break可以省略,一般不建议。
default可以出现在switch语句的任意位置。
switch语句的结束条件:1.遇到break ,2.执行到程序的末尾。
import java.util.Scanner; /** * 键盘录入一个数据,根据这个数据,我们输出对应的星期几 * 键盘录入1,对应输出星期一 * 键盘录入2,对应输出星期二 * ... * 键盘录入7,对应输出星期日 */ public class SwitchDemo { public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入数字:"); int day = input.nextInt(); String str = ""; switch(day){ case 1: str = "星期一"; break; case 2: str = "星期二"; break; case 3: str = "星期三"; break; case 4: str = "星期四"; break; case 5: str = "星期五"; break; case 6: str = "星期六"; break; case 7: str = "星期日"; break; default: str = "输入数据不合法"; break ; } System.out.println(str); } }
在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用哪种语句呢?
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
2.循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
循环语句的组成:
初始化语句:一条或者多条语句,这些语句完成一些初始化操作。
判断条件语句:这是一个boolean表达式,这个表达式能决定是否执行循环体。
循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:这个部分在依次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
3.循环结构(for循环语句)
for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句){ 循环体语句; }
执行流程:
1.执行初始化语句
2.执行判断条件语句,看其结果是true还是false,如果是false,循环结束;如果是true,循环执行。
3.执行循环体语句
4.执行控制条件语句
5.回到2继续
/** * for循环 */ public class ForDemo { public static void main(String[] args){ for(int i = 0;i<4;i++){ System.out.println("Hello World"); } } }
注意事项:
1.判断条件语句的结果是一个boolean类型。
2.循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不可以省略。建议永远不要省略。
/** * 在控制台输入1-10 */ public class ForDemo { public static void main(String[] args){ for(int i = 1;i<=10;i++){ System.out.println(i); } } }
/** * 求1-10的和 */ public class ForDemo { public static void main(String[] args){ int sum = 0; for(int i = 1;i<=10;i++){ sum += i; } System.out.println(sum); } }
/** * 求1-100的奇数和偶数之和 */ public class ForDemo { public static void main(String[] args){ int odd = 0; int even = 0; for(int i =0;i<=100;i++){ if(i %2 == 0){ even += i; }else { odd += i; } } System.out.println("奇数和是"+odd+",偶数和是"+even); } }
/** * 求5的阶乘 * 什么是阶乘? * n! = n*(n-1)! * n! = n *(n-1)*(n-2)*...*3*2*1 */ public class ForDemo { public static void main(String[] args){ int num = 1; for (int i =1;i<=5;i++){ num *= i; } System.out.println(num); } }
/** * 水仙花数 * 所谓的水仙花数就是一个三位数,其各位数字的立方和等于该数本身。 * 举例:153就是一个水仙花数 * 153 = 1*1*1 + 5*5*5 +3*3*3 */ public class ForDemo { public static void main(String[] args){ for(int i = 100;i<=999;i++){ int baiwei = i / 100; int shiwei = i / 10 % 10; int gewei = i % 10; int result = baiwei * baiwei * baiwei + shiwei * shiwei * shiwei + gewei * gewei * gewei; if(i == result){ System.out.println(i+"是水仙花数"); } } } }
4.循环结构(while循环语句)
while循环语句格式:
初始化语句; while(判断条件语句){ 循环体语句; 控制条件语句; }
for循环和while循环的区别?
使用区别:控制条件语句所控制的那个变量,在for循环结束后,接不能再被访问到了,而while循环结束后,还可以继续使用,如果你想继续使用,就用while,否则推荐使用for循环,原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:for循环适合针对一个范围判断进行操作,当然这个范围是数字;而while循环适合判断不明确操作。例如:你去跑十圈,就用for循环;你跑到死为止,就用while循环了。
/** * 我国最高山峰是珠穆朗玛峰:8848米,现在我有一张足够大的纸张,厚度是0.01米。 * 请问:我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度? * 分析: * 1.定义一个统计变量,默认值位0 * 2.最高山峰是珠穆朗玛峰:8848米,这是最终的厚度 * 我现在有一张足够大的纸张,厚度为:0.01米,这是最初的厚度。 * 3.我折叠多少次,就可以保障厚度不低于珠穆朗玛峰的高度 * 折叠依次有什么变化?就是厚度是以前的2倍。 * 4.只要每次变化的厚度没有查过珠穆朗玛峰的高度,就折叠 * 5.输出统计变量 */ public class WhileDemo { public static void main(String[] args){ int count = 0; double end = 8848; double start = 0.01; while(start < end){ count ++; start *= 2; } System.out.println(count); } }
5.循环结构(do...while结构)
do...while循环结构格式:
初始化条件; do{ 循环体语句; 控制条件语句; }while(判断条件语句);
循环结构的区别及注意事项
三种循环语句其实都可以完成一行的功能,也就是说可以等价转换,但还是有小区别的。do...while循环至少会执行一次循环体。for循环和while循环只有在条件成立的时候才会去执行循环体。
写程序优先考虑for循环,再考虑while循环,最后考虑do...while循环。
/** * 输出4行5列的星星 */ public class ForForDemo { public static void main(String[] args){ for(int i = 0;i<4;i++){ for(int y = 0;y<5;y++){ System.out.print("*"); } System.out.println(); } } }
6.跳转控制语句
java中的goto是保留字,目前不能使用。虽然没有goto可以增强程序的安全性,但是也带来了很多不便,比如说,我想在某个循环在某一步的时候就结束,现在就做不了这件事。为了弥补这个缺陷,java就提供了break,continue和return来实现控制语句的跳转和终端。
本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1853470
java流程控制语句之switch和循环语句