文章内容输出来源:拉勾教育大数据高薪训练营
拉勾教育大数据高薪训练营 学习笔记
Java语言基础(四)
文章内容输出来源:拉勾教育大数据高薪训练营
拉勾教育大数据高薪训练营 学习笔记四、流程控制语句(顺序/分支/循环)4.1 分支结构的概念4.2 if分支结构4.3 if else分支结构4.4 if else if else4.5 案例:个人所得税计算4.6 switch case分支结构4.7 循环结构的概念4.8 for循环4.9 for循环打印奇数4.10 continue4.11 break4.12 break 跳出多层循环4.13 for循环实现猜数字游戏4.14 双重for循环4.15 双重循环实现素数打印(除到平方根)4.16 while循环4.17 比较 for 和 while 循环4.18 案例:while循环实现反向输出4.19 do while(熟悉)案例: 使用do while循环检查学习效果
4.20 循环的笔试考点总结
四、流程控制语句(顺序/分支/循环)
4.1 分支结构的概念
当需要进行条件判断并作出选择时,使用分支结构
4.2 if分支结构
if(条件表达式) {
语句块;
}
4.3 if else分支结构
if(条件表达式) {
语句块;
} else {
语句块2;
}
4.4 if else if else
if(条件表达式) {
语句块1;
} else if(条件表达式) {
语句块2;
} else {
语句块3
}
4.5 案例:个人所得税计算
根据用户输入的薪水计算个人所得税并打印出来,其中个税起征点为:5000元,具体规则如下 个人所得税公式: 本月应纳税所得额 * 对应的税率 - 速算扣除数
比如工资是13000,那么超过5000的部分(全月应纳税所得额)为8000,其对应的税率是10%,速算扣除数为210元因此,个人所得税 = 8000 * 10% - 210 = 590(元)
4.6 switch case分支结构
注:switch()中支持的数据类型有 byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型
swith(变量/表达式) {
case 字面值1:
语句块1;
break;
case 字面值2:
语句块1;
break;
...
default:
语句块n;
}
没有break就会发生case穿透(即代码一直执行,知道遇到break才跳出switch case语句)
default 也可以放在最开始,但是要加上break,否则也会发生case穿透
int score
= 66;
switch(score
/ 10) {
case 10: System
.out
.println("等级A"); break;
case 9: System
.out
.println("等级A"); break;
case 8: System
.out
.println("等级B"); break;
case 7: System
.out
.println("等级C"); break;
case 6: System
.out
.println("等级D"); break;
default: System
.out
.println("等级E");
}
4.7 循环结构的概念
在Java程序中若希望重复执行一段代码时,就需要使用循环结构任何复杂的程序逻辑都可以通过顺序、分支、循环三种程序结构实现
4.8 for循环
for(初始化表达式; 条件表达式; 修改初始值表达式) {
循环体;
}
for(int i
= 1; i
<= 10; i
++) {
System
.out
.println("今晚吃鸡,大吉大利,正在进行第" + i
+ "场游戏...");
Thread
.sleep(5000);
System
.out
.println("本场游戏结束!\n\n\n");
}
System
.out
.println("该休息了,否则明天早上就要迟到了!");
4.9 for循环打印奇数
for(int i
= 1; i
<= 100; i
++) {
if(i
% 2 != 0) {
System
.out
.println("i = " + i
);
}
}
for(int i
= 1; i
<= 100; i
+= 2) {
System
.out
.println("i = " + i
);
}
for(int i
= 1; i
<= 50; i
++) {
System
.out
.println("i = " + (2 * i
- 1));
}
4.10 continue
continue语句用在循环体中,用于提前结束本次循环二开始下一次循环
4.11 break
break用于退出当前语句块,break用在循环体中用于退出循环for( ; ; ) - 这种没有循环条件的循环叫做 无限循环,俗称“死循环”break可以配合无限循环使用
boolean flag
= true;
for(;;) {
System
.out
.println("请" + (flag
? "张三": "李四") +"输入要发送的聊天内容:");
Scanner sc
= new Scanner(System
.in
);
String str
= sc
.next();
if("bye".equals(str
)) {
System
.out
.println("聊天结束!");
break;
}
System
.out
.println((flag
? "张三说:": "李四说:") + str
+ "\n\n\n");
flag
= !flag
;
}
4.12 break 跳出多层循环
在嵌套的循环结构中,break用于退出所在循环体如果要退出外层循环体,需要使用标号的方式
public class ForForTableTest {
public static void main(String
[] args
) {
outer
:for(int i
= 1; i
<= 9; i
++) {
for(int j
= 1; j
<= i
; j
++) {
System
.out
.print(j
+ "*" + i
+ "=" + j
*i
+ " ");
if(6 == j
) {
break outer
;
}
}
System
.out
.println();
}
}
}
4.13 for循环实现猜数字游戏
import java
.util
.Random
;
import java
.util
.Scanner
;
public class ForGuessTest {
public static void main(String
[] args
) {
Random ra
= new Random();
int temp
= ra
.nextInt(100) + 1;
int cnt
= 0;
for(;;) {
System
.out
.println("请输入1 ~ 100之间猜测的整数:");
Scanner sc
= new Scanner(System
.in
);
int num
= sc
.nextInt();
cnt
++;
if(num
> temp
) {
System
.out
.println("猜大了,再小一点吧!");
} else if(num
< temp
) {
System
.out
.println("猜小了,再大一点吧!");
} else {
System
.out
.println("恭喜您猜对了,游戏结束!");
break;
}
}
if(1 == cnt
) {
System
.out
.println("你果然是个大咖!");
} else if(cnt
<= 6) {
System
.out
.println("水平不错,继续加油哦!");
} else {
System
.out
.println("你还可以多玩几次游戏!");
}
}
}
4.14 双重for循环
for(初始化表达式1; 条件表达式2; 修改初始值表达式3) {
for(初始化表达式4; 条件表达式5; 修改初始值表达式6) {
循环体;
}
}
特点:
在以后的开发中若需要打印多行多列时,需要使用双重循环多重循环不宜嵌套太多层,否则效率很低。一般到三重循环即可,最常见的就是双重循环
4.15 双重循环实现素数打印(除到平方根)
public class ForForPrimeTest {
public static void main(String
[] args
) {
for(int i
= 2; i
<= 100; i
++) {
boolean isPrime
= true;
for(int j
= 2; j
<= Math
.sqrt(i
); j
++) {
if(0 == i
% j
) {
isPrime
= false;
break;
}
}
if(isPrime
) {
System
.out
.println("i = " + i
);
}
}
}
}
4.16 while循环
while(条件表达式) {
循环体;
}
public class WhileTest {
public static void main(String
[] args
) {
int i
= 1;
while(i
<= 10) {
System
.out
.println("i = " + i
);
i
++;
}
}
}
4.17 比较 for 和 while 循环
while 循环和 for 循环完全可以互换,当然推荐使用 for 循环无限循环:while(true) 等价于 for(; ; ) (空格可以忽略)while 循环更适合于明确循环条件但不明确循环次数的场合中for 循环更适合于明确循环次数或范围的场合中
4.18 案例:while循环实现反向输出
import java
.util
.Scanner
;
public class WhileReverseTest {
public static void main(String
[] args
) {
System
.out
.println("请输入一个正整数:");
Scanner sc
= new Scanner(System
.in
);
int num
= sc
.nextInt();
int res
= 0;
int temp
= num
;
while(temp
> 0) {
res
= res
*10 + temp
% 10;
temp
/= 10;
}
System
.out
.println(num
+ "逆序后的结果是:" + res
);
}
}
4.19 do while(熟悉)
注意分号
先执行再判断条件,即至少执行一次循环体
do {
循环体;
} while(条件表达式);
public class DoWhileTest {
public static void main(String
[] args
) {
int i
= 1;
do {
System
.out
.println("i = " + i
);
i
++;
} while(i
<= 10);
}
}
案例: 使用do while循环检查学习效果
import java
.util
.Scanner
;
public class DoWhileCheckTest {
public static void main(String
[] args
) throws Exception
{
String msg
= null
;
do {
System
.out
.println("正在疯狂学习中...");
Thread
.sleep(5000);
System
.out
.println("是否合格?(y/n)");
Scanner sc
= new Scanner(System
.in
);
msg
= sc
.next();
} while(!"y".equals(msg
));
System
.out
.println("恭喜任务合格!");
}
}
4.20 循环的笔试考点
int i
= 1;
while(i
<= 10000) {
System
.out
.println("I Love You !");
i
++;
}
int i
= 1;
while(i
<= 10000) ; {
System
.out
.println("I Love You !");
i
++;
int i
= 1;
while(i
<= 10000) {
;
}
{
System
.out
.println("I Love You !");
i
++;
}
所以程序才会卡住
总结
break 可以用在循环和 switch case分支结构中continue 只能用于循环结构中,不能用于switch case分支结构