流程控制语句:Java提供了一些流程控制语句,来控制程序的执行流程
提供了三种控制形式
顺序结构:程序默认
分支结构:if、switch
循环结构:for、while、do while
java-分支结构
if语句
Switch语句
Switch的穿透性
java-分支结构-if语句
根据判定的结果(真或假)决定执行某个分支的代码
if分支有三种格式:
格式1: int hearBeat= 90; if (hearBeat < 60 || hearBeat > 100){ System.out.println("您的心跳数据是:" + hearBeat + "您可能需要进一步检查"); }
格式2: double money = 1313; if (money >= 1314){ System.out.println("您当前发送红包成功"); }else { System.out.println("发送失败"); }
格式3: int score = 90; if (score >= 0 && score < 60){ System.out.println("C"); }else if (score >= 60 && score < 80){ System.out.println("B"); }else if (score >= 80 && score < 90){ System.out.println("A"); }else if (score >= 90 && score <= 100){ System.out.println("A+"); }else { System.out.println("您录入的分数有误"); }
java-分支结构-Switch语句
也是匹配条件执行分支,适合做值匹配的分支选择,结构清晰,格式良好
执行流程:
先执行表达式的值,拿这个值去与case后的值进行匹配
匹配哪个case的值为true就执行哪个case,遇到break就跳出Switch分支
如果case后的值都不匹配则执行default代码
String weekday = "周日"; switch (weekday){ case "周一": System.out.println("苦逼的第一天上班"); break; case "周二": System.out.println("苦逼的第二天上班"); break; case "周三": System.out.println("苦逼的第三天上班"); break; case "周四": System.out.println("苦逼的第四天上班"); break; case "周五": System.out.println("苦逼的第五天上班"); break; case "周六": System.out.println("第一天休息"); break; case "周日": System.out.println("第二天休息"); break; default: System.out.println("数据有误");
if、switch分支各自适合做什么场景:
- if其实在功能上远远强大于switchif适合做区间匹配。switch适合做:值匹配的分支选择、代码优雅。
switch分支注意事项:
- 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。case给出的值不允许重复,且只能是字面量,不能是变量。不要忘记写break,否则会出现穿透现象
switch穿透性
如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。
存在多个case分支的功能代码一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码
java-循环结构
- for循环while循环do-while循环死循环循环嵌套
java-循环结构-for循环
控制一段代码反复执行很多次
for ( int i = 0 ; i < 3 ; i ++ ){ System.out.println("Hello World"); }
执行的流程:
- 循环一开始,执行int i = 0 一次4然后判断循环条件:0 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=1了。然后判断循环条件:1 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=2了。然后判断循环条件:2 < 3 返回true ,进入到循环体中执行输出 :helloWorld, 然后执行迭代语句i++ , 此时i=3了。然后判断循环条件:3 < 3 返回false, 循环立即结束!!
for循环案例1:// 需求:计算1-5的和
int sum = 0; for (int i = 1; i <= 5; i++) { sum += i; 等价于:sum = sum + i i == 1 sum = 0 + 1 i == 2 sum = 1 + 2 i == 3 sum = 3 + 3 i == 4 sum = 6 + 4 i == 5 sum = 10 +5 } System.out.println(sum); // 15
for循环案例2:求1-10之间的奇数和,并把求和结果在控制台输出。
方式1:
int sum = 0; for (int i = 1; i <=10 ; i++) { if (i % 2 == 1){ sum += i; } } System.out.println(sum);
方式2:
int sum1 = 0; for (int i = 1; i <=10 ; i+=2) { sum1 += i; } System.out.println(sum);
for循环案例3:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:
- 水仙花数是一个三位数水仙花数的个位、十位、百位的数字立方和等于原数在计算水仙花个数
int count = 0; for (int i = 100; i <=999 ; i++) { int ge = i % 10; int shi = i / 10 % 10; int bai = i / 100; if ((ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){ System.out.print(i+ "t"); count ++; } } System.out.println(); System.out.println("水仙花个数是:" + count);
java-循环结构-while循环
什么时候用for循环,什么时候用while循环?
- 功能上是完全一样的,for能解决的while也能解决,反之亦然使用规范是:知道循环几次:使用for;不知道循环几次建议使用:while。
int i = 0; while (i<3){ System.out.println("hello world"); i++; }
while循环案例:
public static void main(String[] args) { double peakHeight = 8848860; double paperThickness = 0.1; int count = 0; while (paperThickness < peakHeight){ paperThickness *= 2; count ++; } System.out.println("折叠的次数:" + count); // 折叠的次数:27 System.out.println("纸张的最终厚度:" + paperThickness); // 纸张的最终厚度:1.34217728E7 }
for和while使用总结:
- 其实whie能做的for都能实现但是如果一开始不知道循环次数的情况下,建议使用while循环解决更专业。
java-循环结构-do-while循环
do-while循环的特点:一定会先执行一次循环体
int i = 0; do { System.out.println("Hello world"); i++; }while (i < 3);
三种循环的区别:
- for循环 和 while循环(先判断后执行)do…while (第一次先执行后判断)
for和while的区别:
- for循环和while循环的执行流程是一模一样的如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。
java-循环结构-死循环
一直循环的执行下去,如果没有干预不会停止下来
for循环:
for (;;){ System.out.println("Hello World"); }
while循环:
while (true){ System.out.println("我是快乐的死循环"); }
do-while循环
do { System.out.println("我是快乐的死循环"); }while (true);
死循环案例:系统密码是100,请用户不断的输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序
int okPassword = 100; // 2. 定义一个死循环让用户不断地输入密码认证 Scanner sc = new Scanner(System.in); while (true){ System.out.println("请您输入正确的密码"); int password = sc.nextInt(); // 3. 使用if判断密码是否正确 if (password == okPassword){ System.out.println("登录成功了"); break; // 可以立即结束打过去所在循环的结构 }else { System.out.println("密码错误!"); } }
java-循环结构-循环嵌套
循环中有包含循环
嵌套循环的特点:
- 外部循环每循环一次,内部循环全部执行完一次
for (int i = 0; i < 5; i++) { for (int j = 0; j < 3 ; j++) { System.out.println("我爱你"); } System.out.println("----------------------"); }
循环嵌套案例:在控制台使用 * 打印出4行5列的矩形
for (int i = 0; i < 4; i++) { for (int j = 1; j < 5; j++) { System.out.print("*"); } System.out.println(); // 换行 }
java-跳转关键字-break、continue
break:跳出并结束当前所在循环的执行。
break注意事项:只能用于结束所在循环,或者结束所在switch分支的执行
for (int i = 0; i < 5; i++) { System.out.println("快乐的洗碗"); if (i == 2){ break; // 跳出并结束当前循环的执行 } }
continue:用于跳出当前循环的当次执行,进入下次循环。
continue注意事项:只能在循环中进行使用
for (int i = 1; i <= 5; i++) { if (i == 3){ continue; // 立即跳出当前执行,进入循环的下一次 } System.out.println("洗碗:" + i); }
java-案例技术-随机数Random类
Random随机数技术:用于在程序中获取随机数的技术。
使用步骤:
导包:告诉程序去JDK的哪个包中找随机数技术
import java.util.Random;
写一行代码代表得到随机数对象
Random r = new Random();
调用随机数的功能获取0-9的随机数
int data = r.nextInt(10);
Random生成随机数的特点:
nextInt(n)功能只能生成:0 – (n-1)之间的随机数
案例:猜数字游戏
需求:随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏
Random r = new Random(); int luckNumber = r.nextInt(100)+1; Scanner sc = new Scanner(System.in); while (true){ System.out.println("请您输入猜测的数据(1-100)"); int guessNumber = sc.nextInt(); if (guessNumber > luckNumber){ System.out.println("猜错的数据过大"); }else if (guessNumber < luckNumber){ System.out.println("猜错的数据过小"); }else { System.out.println("恭喜您猜中了"); break; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)