在程序中,程序运行的流程控制决定程序是如何执行的,主要有三大流程控制语句:
(1) 顺序控制
(2) 分支控制
(3) 循环控制
从上到下。
分支控制 if-else 介绍:
让程序有选择的的执行,分支控制有三种
(1)单分支 if
(2)双分支 if-else
(3)多分支 if-else if -…-else
基本语法
if(表达式){执行代码块;}
说明:当条件表达式为ture时,就会执行 {} 的代码。如果为false ,就不执行。特别说明,如果中只有一条语句,则可不用。
import java.util.Scanner;
public class Case7 {public static void main(String[] args) {// 应该定义一个 Scanner 对象Scanner myScanner = new Scanner(System.in);System.out.println("请输入年龄:");// 把年龄保存到一个变量 int ageint age = myScanner.nextInt();// 使用 if 判断,输出对应信息if (age >= 18) {System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");}}
}

基本语法
if(条件表达式){执行语句1;}
else{执行语句2;}
说明:当条件表达式成立,即执行代码块1,否则执行代码块2。
import java.util.Scanner;public class Case8 {public static void main(String[] args) {// 应该定义一个 Scanner 对象Scanner myScanner = new Scanner(System.in);System.out.println("请输入年龄:");// 把年龄保存到一个变量 int ageint age = myScanner.nextInt();// 使用 if-else 判断,输出对应信息if (age >= 18) {System.out.println("你年龄已满 18,要对自己的行为负责,送入监狱");} else {// 双分支System.out.println("你的年龄不大这次放过你了");}System.out.println("程序继续...");}
}

import java.util.Scanner;public class Case9 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);System.out.println("请输入第一个数字的大小:");double d1 = myScanner.nextDouble();System.out.println("请输入第二个数字的大小:");double d2 = myScanner.nextDouble();if (d1 > 10.0 && d2 < 20.0) {double sum = d1 + d2;System.out.println("d1 + d2 = " + sum);}}
}

import java.util.Scanner;
public class Case10 {public static void main(String[] args) {// 键盘输入两个变量 int,判断二者的和,是否能被 3 又能被 5 整除,打印提示信息Scanner myScanner = new Scanner(System.in);int a = myScanner.nextInt();int b = myScanner.nextInt();int sum = a + b;if (sum % 3 == 0 && sum % 5 == 0) {System.out.println("sum=" + sum + ",能被 3 整除且能被 5 整除");} else {System.out.println("sum=" + sum + ",不能被 3 整除或者不能被 5 整除");}}
}
==输入 20 30 ==

输入 12 11

import java.util.Scanner;
public class Case1 {// 判断一个年份是否是闰年,闰年的条件是符合下面二者之一:// (1)年份能被 4 整除,但不能被 100 整除;(2)能被 400整除。public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);int year = myScanner.nextInt();if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {System.out.println(year + "是闰年");} else {System.out.println(year + "不是闰年");}}
}
2022

2020

基本语法
if(表达式){执行语块1;}
else if(表达式){执行语块2;}
......
else{执行语块n;}
特别说明:
(1)多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有。
(2)如果有else ,如果所有的条件表达式都不成立,则默认执行else代码块。
如果:
import java.util.*;public class Case2 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);double score = myScanner.nextDouble();if (score == 100) {System.out.println("信用极好");} else if (score > 80 && score <= 99) {System.out.println("信用优秀");} else if (score > 60 && score <= 80) {System.out.println("信用一般");} else {System.out.println("信用不及格");}}
}

考虑不周,如果输入的数字小于0或者大于100就会出现问题
优化后,方法一:
import java.util.*;public class Case2 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);double score = myScanner.nextDouble();if (score == 100) {System.out.println("信用极好");} else if (score > 80 && score <= 99) {System.out.println("信用优秀");} else if (score > 60 && score <= 80) {System.out.println("信用一般");} else if(score > 0 && score <= 60){System.out.println("信用不及格");} else {System.out.println("请输入0到100的整数!");}}
}

优化后,方法二(嵌套)
import java.util.*;public class Case2 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);double score = myScanner.nextDouble();if (score >= 1 && score <= 100) {if (score == 100) {System.out.println("信用极好");} else if (score > 80 && score <= 99) {System.out.println("信用优秀");} else if (score > 60 && score <= 80) {System.out.println("信用一般");} else {System.out.println("信用不及格");}} else {System.out.println("请输入0到100的整数!");}}
}

基本介绍:在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。不要超过 3 层 (可读性不好)。
基本语法
if(条件){if(条件){......;else{...}}
else{...}
}
import java.util.Scanner;public class Case3 {// 参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。// 并且根据性别提示进入男子组或女子组。// 输入成绩和性别,进行判断和输出信息。public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);System.out.println("请输入该歌手的成绩:");double score = myScanner.nextDouble();if (score > 8.0) {System.out.println("请输入性别:");char gender = myScanner.next().charAt(0);//如果输入“男生” charAt(0)获取字符串的第一个字符,即 男if (gender == '男') {System.out.println("进入男子组");} else if (gender == '女') {System.out.println("进入女子组");} else {System.out.println("你的性别有误,不能参加决赛~");}} else {System.out.println("你已经被淘汰了");}}
}

4到10月旺季:
成人(18-60):60
儿童(<18):半价
老人(>60):1/3
淡季:
成人:40
其他:20
思路分析:(1)淡旺季 if - else (2)在旺季中,可以使用多分支处理三种情况(3)在淡季情况,使用双分支处理。
import java.util.Scanner;public class Case4 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);System.out.println("请输入月份和年龄:");int month = myScanner.nextInt();int age = myScanner.nextInt();if (month >= 4 && month <= 10) {if (age < 18) {System.out.println("票价为30元");}if (age >= 18 && age <= 60) {System.out.println("票价为60元");} else {System.out.println("票价为20元");}} else {if (age >= 18 && age <= 60) {System.out.println("票价为40元");} else {System.out.println("票价为20元");}}}
}

基本语法
switch(表达式){//表达式必须是一个对应的值
case 常量1 : 语句块1;break;
......
case 常量n : 语句块n;break;
default : 语句块;break;//常量1到n都没有匹配到就执行这条语句
}
a 表示星期一,b 表示星期二 …
import java.util.Scanner;public class Case5 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);System.out.println("请输入字母(a 到 g):");char ch = myScanner.next().charAt(0);switch (ch) {case 'a':System.out.println("今天星期一");break;case 'b':System.out.println("今天星期二");break;case 'c':System.out.println("今天星期三");break;case 'd':System.out.println("今天星期四");break;case 'e':System.out.println("今天星期五");break;case 'f':System.out.println("今天星期六");break;case 'g':System.out.println("今天星期天");break;default:System.out.println("请输入字母(a 到 g)!");break;}}
}
输入a

输入h

1. 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int。
2. switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举].,String)。
import java.util.Scanner;public class Case6 {public static void main(String[] args) {// 使用 switch 把小写类型的 char 型转为大写(键盘输入)。// 只转换 a, b, c, d, e. 其它的输出 "other"。Scanner myScanner = new Scanner(System.in);System.out.println("请输入小写字母:");char ch = myScanner.next().charAt(0);// A 对应值为65,a 对应值为97switch (ch) {case 'a':System.out.println("A");break;case 'b':System.out.println("B");break;case 'c':System.out.println("C");break;case 'd':System.out.println("D");break;case 'e':System.out.println("E");break;default:System.out.println("other");break;}}
}
输入a

输入z

if-else语句
import java.util.Scanner;public class Case7 {// 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,// 输出"不合格"。(注:输入的成绩不能大于 100)public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);int score = myScanner.nextInt();if (score >= 0 && score <= 100) {if (score < 60) {System.out.println("不合格");} else {System.out.println("合格");}} else {System.out.println("请输入100以内的自然数!");}}
}
输入50

输入80

输入120

switch语句
import java.util.Scanner;public class Case7 {// 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,// 输出"不合格"。(注:输入的成绩不能大于 100)public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);int score = myScanner.nextInt();if (score >= 0 && score <= 100) {switch ((int) (score / 60)) {case 0:System.out.println("不合格");break;case 1:System.out.println("合格");break;// default :// System.out.println("输入有误");}} else {System.out.println("输入的成绩在 0-100!");}}
}

import java.util.Scanner;public class Case8 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);System.out.println("请输入1~12:");int month = myScanner.nextInt();switch (month) {case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;case 12:case 1:case 2:System.out.println("冬季");break;default:System.out.println("请输入1~12!");}}
}

(1)如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。两个语句都可以使用,建议使用 swtich 语句。
(2)其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广。
import java.util.Scanner;public class Case10 {// 编写一个 main 方法public static void main(String[] args) {// 打印出九九乘法表int i, j;for (i = 1; i <= 9; i++) {// i 表示前一个数for (j = 1; j <= i; j++) {// j 表示后一个数int sum = i * j;System.out.print(" " + i + "*" + j + "=" + sum +"\t");if(i == j){System.out.print("\n");//当换行条件成立时,进行换行打印}}}}
}
