java选择结构一共分为两个大类
1、if语句
2、switch语句
一、if-else条件判断结构
1、单if格式:
if(条件语句){
语句块;
}
int num = 1;
if(num = 1){
System.out.println("num = " + num); //1
}
2、if-else语句格式:
if(条件语句){
语句块1:一般为true结果
}else{
语句块2:一般为false结果
}
int num = 1;
if(num = 2){
System.out.println("num = " + num); //1
}else{
System.out.println("******"); //******
}
3、if-else if-else多条件分支语句格式:
//例:
if(条件){
//代码1:条件1为true时运行
}else if(条件2){
//代码2:条件1为false、条件2为true
}else if(条件3){
//代码3:条件1、2为false,条件3为true
}else{
//代码4:条件1、2、3都为false
}
int score == 66;
if(score == 100){
System.out.println("******");
}else if(score >=60 && score <=80){
System.out.println("------");
}else if(score > 80 && score <=99){
System.out.println("^^^^^^");
}else{
System.out.println("~~~~~~"); //------
}
多个表达式之间没有交集(互斥关系),对表达式顺序没有特别要求,如上所示。
但若多个表达式之间是包含关系,则需要将范围小的条件表达式声明在范围大的条件表达式上面。
4、嵌套的if语句
//如:比较num1、num2、num3大小,并从小到大输出
import java.util.Scanner;
public class SwitchCaseTest {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个数");
int num1 = input.nextInt();
System.out.println("请输入第二个数");
int num2 = input.nextInt();
System.out.println("请输入第三个数");
int num3 = input.nextInt();
if (num1 >= num2){
if (num3 >= num1){
System.out.println(num2 + "," + num1 + "," + num3);
}else if (num3 <= num2){
System.out.println(num3 + "," + num2 + "," + num1);
}else{
System.out.println(num1 + "," + num3 + "," + num2);
}
}else { // num1 < num2
if (num3 >= num2){
System.out.println(num1 + "," + num2 + "," + num3);
}else if (num3 <= num1){
System.out.println(num3 + "," + num1 + "," + num2);
}else{
System.out.println(num1 + "," + num3 + "," + num2);
}
}
}
}
二、switich-case结构
1、switch-case语法格式:
switch(){
case 常量1:
//执行语句1
break;
case 常量2:
//执行语句2
break;
...
default:
//执行语句2
break;
}
①、switch-case结构根据表达式中的值,依次匹配case语句,当与case中的常量相等,执行该case语句。
②、执行break关键字时,跳出当前switch-case结构,若无break关键字则继续执行所有case的执行语句直至遇到break或者执行完default中的语句。
③、switch中的表达式只能是特定的数据类型。如:byte \ short \ char \ int \ 枚举 \ String()
④、case后跟的都是常量,使用表达式与这些常量做相等的判断,不能进行范围的判断。
⑤、switch-case结构都可以改写成if-else,反之不行。
import java.util.Scanner;
public class SwitchCaseTest {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("请输入num的值:");
int num = input.nextInt();
switch(num) {
case 1 :
System.out.println("值为111");
break;
case 2:
System.out.println("值为222");
break;
case 3:
System.out.println("值为333");
break;
default:
System.out.println("其它");
}
}
}
结果如下图所示
2、switch-case可以利用穿透性,同时执行多个分支
//使用switch-case实现,对成绩大于60分的,输出”合格“,低于60分,输出”不合格“
//默认范围[0,100]
import java.util.Scanner;
public class SwitchCaseExer01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入考试分数:");
int score = input.nextInt();
switch (score / 10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("及格");
break;
default:
System.out.println("成绩输入有误");
break;
}
input.close();
}
}