1.三种执行结构
1.顺序结构:代码从上到下,依次执行,这种执行结构是程序运行的基本结构。
2.分支结构:代码执行到了某一个节点,遇到了多种继续执行的可能性,选择其中的一种继续向下执行。
3.循环结构:某一段代码因为某种条件,需要重复执行多次。
我们通过指定的语法,来控制程序的执行流程,这种语法就叫流程控制语法。
2.if相关语法
(1)if-else基础语法
if(boolean类型的变量或者表达式) {
//代码块 //条件满足执行
}else{ //有时也可以不写else部分
//代码 //条件不满足
}
//.......后续代码..........
(2)多分支的情况:
if (condition1) {
// code1
}
else if (condition2) {
// code2
}
else if (condition3) {
// code3
}
...
else {
}
(3)特别写法
if(条件)
System.out.println("") //是只有一个语句的情况,否则不可以省略括号
else
System.out.println("")
3.switch-case
语法:
switch(变量){
case 值1:
//代码块
case 值2:
//代码块
case 值3:
//代码块
..............:
default:
}
执行逻辑:捕获变量的值,如果变量的值和某一个case之后的值能够匹配上,则执行这个case后面的代码。
注意:在switch语句中,存在穿透性。
如果变量varibale的值,和某一个case能够匹配上,则执行从这个case开始,往后所有的代码。这个过程会跳过后面的case验证。
如果不需要穿透性,需要使用关键字 break
如代码演示:没有break的
public class _06SwitchCaseDemo {
public static void main(String[] args) {
// 随机一个整数:[0,4]
int num= (int)(Math.random()*5);
switch (num){
case 0:
System.out.println("随机的是0");
case 1:
System.out.println("随机的是1");
case 2:
System.out.println("随机的是2");
case 3:
System.out.println("随机的是3");
default:
System.out.println("随机的是4");
}
System.out.println("---main方法结束---");
}
}
随机到的数是2,但是还在继续向下执行下面的代码
switch-case的一个例子:
需求:输入一个年份和一个月份,并判断这一年是闰年还是平年,并且输出该月份有几天
样式:2024是闰年,8月有31天
public class Exercise1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入年份:");
int year =sc.nextInt();
System.out.println("输入月份");
int month = sc.nextInt();
if (month<1||month>12){
System.out.println("输入的月份不合法");
return;//
}
String str="";
boolean flag = false;
if (year%4==0&&year%100!=0||year%400==0){
str = "闰年";
flag = true;
}else {
str = "平年";
}
int days = -1;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;break;
case 4:
case 6:
case 9:
case 11:
days = 30;break;
case 2:
if(flag){
days = 29;
}else {
days = 28;
}
}
System.out.println(year+"是"+str+","+month+"是"+days+"天");
sc.close();
}
}
if 和 switch 的应用场景:
1.如果分支的条件,是一个范围,使用if
2.如果分支的条件,是一个值,可以使用if,也可以使用switch
4.for循环
循环的三要素:
1.循环因子的声明和初始化
2.循环条件
3.循环步长:循环因子向着循环结束的方向而改变
for循环的语法:for(①循环因子的声明和初始化;②循环条件;③步长){
//循环体④
}
执行逻辑:① --------> ② ----条件成立---->④-------->③-------->②---条件成立----->④-------->.......
-------->③-------->②---条件不成立----->结束循环
for循环的其他写法:
1. for循环的小括号里除了分号,其他都可以省略,但是循环条件省略,默认就是true。
for (;;) {
System.out.println("Hello World");
}
循环三要素都省略,循环条件省略就相当于true,条件一直成立,即形成死循环。
2. 循环因子的声明和初始化,可以写在for循环之前
int i = 1;
for(;i<10;i++){
System.out.println("i = " + i);
}
3. 循环步长可以写在循环体中
for(int m = 0;m<10;){
System.out.println("m = " + m);
m+=3; //循环步长
}
4.循环体只有一行代码时,花括号可以不写。
5.while循环
语法: while(循环条件){
循环体
}
while循环的循环因子的声明和初始化写在while的前面,循环步长写在循环体中。
while循环运用的一个实例:猜数游戏
/**猜数字游戏的模拟*/
Scanner sc = new Scanner(System.in);
// 一个同学在手机上输入的数字,开始猜这个数字
int answer = (int)(Math.random()*10);
while(true){
System.out.println("请继续猜:");
int guess = sc.nextInt();
if(guess == answer){
System.out.println("猜对了");
break; //打断,跳出,结束
}else if(guess > answer){
System.out.println("猜大了,请往小猜");
}else{
System.out.println("猜小了,请往大猜");
}
}
6.do-while循环
语法:
do{
循环体
}while(循环条件); (分号不能忘写)
特点: 先执行一次循环体,然后再判断循环条件是否成立, 循环条件成立,再执行循环体。
总结:for,while,do-while的应用场景或者区别
1. for循环适合知道循环次数的场景
2. while循环适合不知道循环次数的场景
3. 适合先执行循环体,再判断条件的场景。比如 做一件事,直到什么时候结束
7.break和continue关键字
(1)break关键字
break: 在循环结构中,表示打断,跳过,结束循环。继续向下执行后续代码。
注意:break只能结束其所在的那一层循环结构
(2)continue关键字
continue:在循环结构中表示中止打断本次循环(结束这一次循环),继续下一次的循环。
下一次从循环是从循环步长开始执行的。