java —— 分支
分支语句
一、if语句
(一)、if - else 语句
if( 表达式 ){
语句;
} else {
语句;
}
public class 类名 {
public static void main(String[] args){
if (表达式){
语句体1;
}else{
语句体2;
}
}
}
- 当表达式的结果为真时(即满足表达式时),执行语句体1,如果不满足表达式时,执行语句体2;
- 语句体1,语句体2,在 if - else 语句中只会执行一个,不会两个同时执行;
- if(表达式) 是正确的写法,if(表达式); 是错误的写法,if(表达式) 的后面没有分号!
代码1:
public class Reversal {
public static void main(String[] args){
int a = 10;
int b = 20;
if (a > b){
System.out.println(a);
}else{
System.out.println(b);
}
}
}
在此代码中 a = 10 ,b = 20,b是大于a的所以按照 if - else 语句应该输出的是b的答案,即20。
20
代码2:
public class Reversal {
public static void main(String[] args){
int a = 10;
int b = 20;
if (a > b); {
System.out.println(a);
}else{
System.out.println(b);
}
}
}
在此代码中我们在 if(a > b) 的后面加了一个 ; 这会导致什么结果?
错误: java: 有 'if', 但是没有 'else'
我们的编译器报错,没有else,但是实际上我们有一个else。
这是因为分号(;)代表一个语句,在 if(a > b) 后面加上一个分号,就代表了一个空语句,因此我们的 System.out.println(a); 语句就被自动划给了 else , 因此我们后面的else就被视为无效了。
(二)、if - else 的嵌套结构
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}else if(表达式3){
语句3;
} ……
public class Main {
public static void main(String[] args) {
if (表达式1){
语句体1;
}else if (表达式2){
语句体2;
}else if (表达式3){
语句体3;
}else if (表达式4){
语句体4;
}......
}
}
- 当表达式1不成立才会判断表达式2,同理表达式2不成立才会继续去判断表达式3;
- if语句中的else是对应它最近的if;
- if、else 是关键字。
代码1:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if (num > 0){
System.out.println(num + "是正数");
}else if (num < 0){
System.out.println(num + "是负数");
}else{
System.out.println(num + "是0");
}
}
}
5
5是正数
-2
-2是负数
0
0是0
代码2:(表达式下的第2点)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a == 1)
if (b == 2)
System.out.println(a); // 语句1
else
System.out.println(b); // 语句2
}
}
很多会误以为 语句1的执行条件为:a为1,并且b为2; 语句2的执行条件:a不为1
1 2
1
1 3
3
但是从运行结果可以知 语句2的执行条件为:a为1,并且b不为2
二、switch语句
- 结构:
switch(表达式){
case 常量1:{
语句1;
break;
}
case 常量2:{
语句2;
break;
}
case 常量3:{
语句3;
break;
}
……
default:{
语句体n;
break;
}
}
public class Main {
public static void main(String[] args) {
switch (表达式){
case 常量1 :{
语句体1;
break;
}
case 常量2 :{
语句体2;
break;
}
……
default:{
语句体n;
break;
}
}
}
}
- case的后面一定是一个常量!,case语句的最后一定要加上 break 语句停止执行 switch 后面的所有语句;
- switch 的表达式是 char、byte、short、int、Character、Byte、Short、Integer、枚举类型中的一种;
- default 语句 判断不属于前面任何case的情况。
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
switch (a){
case 1:{
System.out.println("石头");
break;
}
case 2:{
System.out.println("剪刀");
break;
}
case 3:{
System.out.println("布");
break;
}
default:{
System.out.println("error!");
break; // 可加可不加
}
}
}
}
2
剪刀
4
error!