选择与循环语句
选择结构
顺序结构
如果没有流程控制,程序按照从上往下顺序执行
分支结构(选择结构)
当面临多个选择时,我们可以采用分支结构,分为
- 条件选择语句
if ifelse
- 等值匹配分支
switch
if
if(boolean表达式){
语句体;
}
布尔表达式为true才会运行if语句
if-else
if(boolean表达式) {
语句体1;
} else {
语句体2;
}
boolean表达式为true则执行语句体1,为false则执行其他语句
if-else if-else
if(boolean表达式1){
语句体1;
}else if(boolean表达式2){
语句体2;
}else if(boolean表达式3){
语句体3;
}else{
语句体4;
}
运行判断if条件语句,如果判断表达式1为true,则执行语句体1,为false则判断表达式2,
表达式2为true,则执行语句体2,为false,则继续判断表达式3
表达式3为true,则执行语句体3,为false,则执行语句体4
switch
switch中表达式要求必须是整型,或者类整型(char), jdk1.7后,也可以字符串(不建议)
switch(整型表达式){
case A值:
语句体1; break;
case B值:
语句体2; break;
case C值:
语句体3; break;
n多个case语句
default:
以上值都不满足时,执行此语句;
break;//可以省略
}
例子:
需求:根据输入的一个数字,判断是星期几?
//定义一个Scanner类,用作控制台输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入1-7之间一个数");
int week = sc.nextInt();
switch(week){
case 1: System.out.println("今天是周一");
break;
case 2:System.out.println("今天是周二");
break;
case 3:System.out.println("今天是周三");
break;
case 4:System.out.println("今天是周四");
break;
case 5:System.out.println("今天是周五");
break;
case 6:System.out.println("今天是周六");
break;
case 7:System.out.println("今天是周日");
break;
default: System.out.println("你输入错啦");
break;
}
// case 语句中break不能省略
//switch 一般只适合等值判断
循环结构
一般重复执行某段代码时可以使用循环结构
while
while(boolean表达式){
循环体;
}
while循环,先判断boolean表达式,
为true,则执行循环体,直到为false,停止运行,若为false,则不运行
do while
do{
语句体;
}while(boolean表达式); //分号别忘了
不管对错,先执行一遍语句体,再进行判断,
为true,则执行循环体,直到为false,停止运行,若为false,则不运行
例子:
while与do-while对比
int a = 10;
int b = 15;
//使用while循环
while(a>b){
System.out.println("a大于b");
}
while循环,结果:没有执行
//使用do-while循环
do{
System.out.println("a大于b");
}while(a>b);
结果:输出了"a大于b" 语句 do-while会先执行一次语句体
for
for(初始化语句 ; boolean表达式;循环后语句){
语句体;
}
先执行初始化语句(只运行一次),再进行boolean判断,为false则不运行for循环,
为true则执行语句体,执行完后运行循环后语句,再进行boolean判断,
为true则继续运行以上操作,直到为false
例子:
需求:找出 [1, 500] 之间偶数的个数。
public class Demo13 {
public static void main(String[] args) {
int count = 0; //作为偶数个数的计数器
//for循环遍历1-500
for(int i =1; i<=500 ;i++){
//if判断偶数
if(i % 2 ==0){
//为偶数则计数器加1
count++;
}
}
System.out.println(count);
}
}
break,continue,return
break : 结束整个循环
return: 结束整个方法
continue : 结束当前此次循环(跳过此次循环),直接进入下一次循环