java流程控制
程序默认从上到下执行,但是可以通过流程控制语句(选择/判断/循环)改变运行顺序
1.if判断
如果满足条件则执行对应语句。
if分支:
单分支
双分支
多分支
if的单分支
if(布尔表达式){
语句块;
}
执行流程:如果布尔表达式为true,执行语句块,否则,继续执行程序后面的语句。
if的双分支
if(布尔表达式){
语句块1;
}else{
语句块2;
}
执行流程:如果布尔表达式为true,执行语句块1,否则,执行语句块2(跳过语句块1)执行完语句块2后继续执行程序后面的语句。
if的多分支
if(布尔表达式1){
语句块1;
}else if(布尔表达式2){
语句块2;
}else{
语句块3;
}
执行流程:如果布尔表达式1为true,执行语句块2,否则,判断布尔表达式2,如果布尔表达式2为true则执行语句块2,否则执行语句块3。即满足哪一个布尔表达式执行对应语句块,跳过其他语句块,如果都不为true,则执行else里的语句块。
!!!在这里根据需求书写多个else if 同样根据需求选择合适的分支结构。
例子
public static void main(String arg[]){
System.out.println("请输入一个成绩:");
Scanner scanner = new Scanner(System.in);
int gread = scanner.nextInt();
if (gread<=100&&gread>=90) {
System.err.println("A类生");
}else if (gread>=60) {
System.out.println("B类生");
}else if (gread<60) {
System.out.println("C类生");
}else {
System.out.println("输入的分数错误");
}
scanner.close();
}
2.switch选择
switch语句允许变量与多个值进行相等性检测,每个值被一个case语句调用和检测。当匹配成功执行相应语句。
switch语句的形式
switch(变量){
case 值1:
语句块;
break;
case 值2;
语句块2;
break;
…………
…………
default:
语句块n;
}
执行流程:匹配变量的值和case后面的值,相同执行对应语句块。如果匹配不成功则执行default的语句块。
!!!注意:
1.switch中变量的数据类型只能是:byte/short/int/char/string
2.可以有多个case值进行不同的操作,case的值不可以重复。
3.case后面的值的类型必须与switch的变量类型相同,并且必须是常量或者字面量。
4.遇到break就跳出该switch语句,如果没有break,则继续执行下一个case语句直到遇到break。
5.一个switch语句可以有一个可选择的default条件,一般出现在switch末尾,如果case的条件都是false那么default可以用于执行某种任务,并且在default中不需要break。
例子
public static void main(String[] args) {
try{
System.out.println("请输入年龄:");
int age = new Scanner(System.in).nextInt();
switch(age){
case 2:
case 3:
System.out.println("小班");
break;
case 4:
System.out.println("中班");
break;
case 5:
case 6:
System.out.println("大班");
break;
default:
System.out.println("超出范围");
}
}catch(InputMismatchException i){
System.out.println("输入的数据不符合类型");
}
3.循环
for循环
for循环是一种允许我们编写一个执行指定次数循环的控制结构
for(初始化; 布尔表达式 ; 更新){
//语句块;
}
执行流程:初始化步骤首先执行,且执行一次。这个步骤允许我们声明并初始化任何控制循环变量。不是必须如果为空必须有分号。然后执行布尔表达式,结果为true执行一次语句块,然后控制流程跳回更新语句再判断一次布尔表达式,结果为true继续执行语句块,如此往复,直到布尔表达式为false循环结束
例子
输出0-100
public static void main(String[] args) {
for (int i = 0; i <= 100; i++) {
System.out.println(i);
}
}
计算100以内所有偶数和
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i%2==0) {
sum += i;
}
}
System.out.println(sum);
}
输出并计数水仙花数
public static void main(String[] args) {
int sum = 0;
for (int i = 100; i < 1000; i++) {
int a , b , c;
a = i/100%10;
b = i/10%10;
c = i/1%10;
if (a*a*a+b*b*b+c*c*c==i) {
System.out.println(i);
sum += 1;
}
}
System.out.println("有"+sum+"个水仙花数");
}
while循环
while循环是一种允许重复执行某项任务的控制结构
语法格式
while(布尔表达式){
语句块;
}
执行流程:首先检测布尔表达式。如果为true就执行语句块,语句块执行完成后又回到布尔表达式,再次检测如果为true继续执行语句块,直到布尔表达式为false。
例子
判断输入的数是几位数
System.out.println("请输入一个数");
int num = scanner.nextInt();
int i = 0;
while (num>0) {
num/=10;
i++;
}
System.out.println("是"+i+"位数");
break和continue
break是中断的意思即跳出循环让循环体提前结束
continue是继续的意思即结束本次循环进行下次循环
do循环
语法格式
do{
语句块;
}while(布尔表达式);
注意布尔表达式后面必须有分号
执行流程:先运行一次语句块,然后判断布尔表达式,如果为true就继续执行一次语句块,然后在检测,如果为true继续执行语句块,直到布尔表达式为false。