流程控制语句
流程控制语句:
流程,程序的执行流程:
在main方法内,从上至下依次逐行执行
控制,通过控制改变正常的执行流程
语句,
if,
if.else,
if.elseif. switchcase,
while,
dowhile.for等
if
if, 如果,配合关系运算达到某些代码选择执行的效果.
if.else
if, 如果,配合关系运算达到某些代码选择执行的效果
public static void main(String[] args) {
int age = 27;
/*
* if (布尔表达式) {
* 执行语句;
* } else {
* 执行语句;
* }
* 执行流程:
* 1 执行到if,先判断表达式
* 2 如果表达式结果为true,执行if后{}内语句,else后内容不再执行
* 3 如果表达式结果为false,跳过if后{}语句,而执行else内的内容
*/
if (age >= 18 && age <= 70) {
System.out.println("可以考驾照~");
} else {
System.out.println("不行!");
}
// 1声明两个变量,a,b 输出其中最大值
int a = 2;
int b = 11;
if (a > b) {
System.out.println("最大值是a = " + a);
} else {
System.out.println("最大值是b = " + b);
}
// 声明三个变量,xyz 输出其中最大值
int x = 11;
int y = 22;
int z = 33;
if (x > y) {
if (x > z) {
System.out.println("最大值是x = " + x);
} else {
System.out.println("最大值是z = " + z);
}
} else {
if (y > z) {
System.out.println("最大值是y = " + y);
} else {
System.out.println("最大值是z = " + z);
}
}
}
}
elseif..
使用if.else语句完成程序: 输入一个数字,是周几,比如是1,输出周一,2输出周二,依次类推,取值范围1-7
/*
* 使用if.else语句完成程序:
* 输入一个数字,是周几,比如是1,输出周一,2输出周二,依次类推,取值范围1-7
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入数字:");
int num = scanner.nextInt();
if (num >= 1 && num <= 7) {
if (num == 1) {
System.out.println("周一,吃米饭");
} else {
if (num == 2) {
System.out.println("周二,吃面条");
} else {
if (num == 3) {
System.out.println("周三,吃麻辣香锅");
} else {
if (num == 4) {
System.out.println("周四,吃胡辣汤");
} else {
if (num == 5) {
System.out.println("周五,吃元宵");
} else {
System.out.println("周末,不吃!");
}
}
}
}
}
} else {
System.out.println("数字不符合要求!");
}
}
}
以上使用if.else语法完成多条件判断时,if..else嵌套很严重,代码不便于阅读
所以,多分支语句推荐使用if.elseif.elseif..else
// ==============================================
/*
* if (布尔表达式1) {
* 执行语句1;
* } else if(布尔表达式2) {
* 执行语句2;
* } else if(布尔表达式3) {
* 执行语句3;
* } ... {
* 执行语句n;
* } else {
* 执行语句;
* }
* ---------------
* 执行流程:
* 1 先判断if后表达式
* 2 如果表达式结果为true,执行语句1,后续所有elseif不执行
* 3 如果表达式结果为false,跳过语句语句1,去执行第二个判断
* 4 如果第二个表达式为true,就执行语句2,
* 如果第二个表达式为false,就跳过语句2,执行第三个判断
* 5 ...
* 6 如果以上所有if判断都是false,就执行最后一个else
*/
if (num >= 1 && num <= 7) {
if (num == 1) {
System.out.println("11");
} else if (num == 2) {
System.out.println("22");
} else if (num == 3) {
System.out.println("33");
} else if (num == 4) {
System.out.println("44");
} else if (num == 5) {
System.out.println("55");
} else {
System.out.println("周末");
}
} else {
System.out.println("数字不符合条件!");
}
switch.case
switch.case用来做等值
选择
public static void main(String[] args) {
// 判断数字是周几
int a = 1;
// switch后允许byte,short,int,char,String,枚举
switch(a){
case 1: // case后是定值,类型要与switch后的值一致,后面是冒号
System.out.println("周一");
break;// 没有break,会造成case击穿
// 有break,会打断当前switch结构不再执行
case 2:
System.out.println("周二");
break;
case 3:
System.out.println("周三");
break;
default:// default最后执行
System.out.println("其他值!");
}
System.out.println("这是switchcase后");
/*
* 1 switch后的值,与case的值做等值判断
* 2 如果相等,就会执行case内部的代码,
* 遇到break,switchcase结构不再执行
* 3 如果不相等,就执行下一个case做等值判断
* 4 ...
* 5 如果以上所有case都不相等,直接执行default内的内容
*/
}
}
循环
有些场景是需要某些代码重复执行的.
while循环
do.while循环
for循环
while循环
public static void main(String[] args) {
/*
* while (布尔表达式) {
* 执行代码;
* }
* -------------------
* 1 当执行到while后,判断表达式
* 2 如果表达式结果为true,就执行{}内的语句
* 执行后,回头执行while内的判断
* 3 如果为true,继续执行{}内内容,然后继续回头判断....
* 只有改变变量,让判断为false,跳出循环
*/
int i = 1;
while (i <= 10) {
System.out.println("元宵节快乐!");
i++;
}
System.out.println("i = " + i);
/*
* 总结套路(循环四要素):
* 1 循环初始值
* 2 循环控制条件
* 3 循环体
* 4 循环迭代
*/
// 打印1-10
int j = 1;
while (j <= 10) {
System.out.println("j = " + j);
j++;
}
//10-1
int k = 10;
while (k > 0) {
System.out.println("k = " + k);
k--;
}
//输出1-100中的偶数
int m = 1;
while (m <= 100) {
// 判断是否是偶数
if (m % 2 == 0) {
System.out.print(m+" ");
}
// 每10次换一行
if (m % 10 == 0) {
System.out.println();
}
m++;
}
do.while
先执行后判断
public static void main(String[] args) {
/*
* do{
* 循环体;
* } while(布尔表达式);
* -------
* 1 先执行do内代码
* 2 然后再判断表达式
* 3 结果为对,再回头执行do内代码
* 4 继续判断表达式,直到判断为false跳过循环
*/
int i = 1;
do {
System.out.println("马上大扫除,10分钟搞定!");
i++;
} while(i <= 10);