if语句

if

  • if语句第一种格式: if
1
2
3
if(关系表达式){ 
语句体;

  • 执行流程
    • 首先判断关系表达式看其结果是true还是false
    • 如果是true就执行语句体
    • 如果是false就不执行语句体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args){ 
System.out.println("开始");
// 定义两个变量
int a = 10;
int b = 20;
//变量使用if判断
if (a == b){
System.out.println("a等于b");
}
int c = 10;
if(a == c){
System.out.println("a等于c");
}
System.out.println("结束");

if…else

  • if语句第二种格式: if…else
1
2
3
4
5
if(关系表达式) {
语句体1;
}else {
语句体2;
}
  • 执行流程

    • 首先判断关系表达式看其结果是true还是false

    • 如果是true就执行语句体1

    • 如果是false就执行语句体2

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args){ 
// 判断给定的数据是奇数还是偶数
// 定义变量
int a = 1;
if(a % 2 == 0) {
System.out.println("a是偶数");
} else{
System.out.println("a是奇数");
}
System.out.println("结束");
}

if…else if…else

  • if语句第三种格式: if…else if …else
1
2
3
4
5
6
7
8
9
10
11
if (判断条件1) { 
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
}else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
  • 执行流程
    首先判断关系表达式1看其结果是true还是false
    如果是true就执行语句体1
    如果是false就继续判断关系表达式2看其结果是true还是false
    如果是true就执行语句体2
    如果是false就继续判断关系表达式…看其结果是true还是false

    如果没有任何关系表达式为true,就执行语句体n+1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) { 
// x和y的关系满足如下:
// x>=3 y = 2x + 1;
//‐1<=x<3 y = 2x;
// x<=‐1 y = 2x – 1;
// 根据给定的x的值,计算出y的值并输出。
// 定义变量
int x = 5;
int y;
if (x>= 3) {
y = 2 * x + 1;
} else if (x >= ‐1 && x < 3) {
y = 2 * x;
} else {
y = 2 * x ‐ 1;
}
System.out.println("y的值是:"+y);
}

语句练习

  • 指定考试成绩,判断学生等级
    • 90-100 优秀
    • 80-89 好
    • 70-79 良
    • 60-69 及格
    • 60以下 不及格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) { 
int score = 100;
if(score<0 || score>100){
System.out.println("你的成绩是错误的");
}else if(score>=90 && score<=100){
System.out.println("你的成绩属于优秀");
}else if(score>=80 && score<90){
System.out.println("你的成绩属于好");
}else if(score>=70 && score<80){
System.out.println("你的成绩属于良");
}else if(score>=60 && score<70){
System.out.println("你的成绩属于及格");
}else {
System.out.println("你的成绩属于不及格");
}
}

if语句和三元运算符的互换

在某些简单的应用中,if语句是可以和三元运算符互换使用的。

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
int a = 10;
int b = 20;
//定义变量,保存a和b的较大值
int c;
if(a > b) {
c = a;
} else {
c = b;
}
//可以上述功能改写为三元运算符形式
c = a > b ? a:b;
}

案例

判断三角形为什么三角形
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;
public class triangle {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一条边长");
int a = sc.nextInt();
System.out.println("请输入第二条边长");
int b = sc.nextInt();
System.out.println("请输入第三条边长");
int c = sc.nextInt();
if(a>0&&b>0&&c>0){
if((a+b)>c&&(a+c)>b&&(c+b)>a){
if (a == b & b== c & a==c){
System.out.println("是等边三角形");
}else if (a == b | b == c | b == c){
System.out.println("是等腰三角形");
}else {
System.out.println("是三角形");
}
}else{
System.out.println("不是三角形");
}
}else{
System.out.println("边长不能小于零");
}

}
}
解ax^2+bx+c=0的根
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Scanner;

public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

//输入数据
System.out.println("请输入a");
float a = sc.nextFloat();
System.out.println("请输入b");
float b = sc.nextFloat();
System.out.println("请输入c");
float c = sc.nextFloat();

float derta = b * b - 4 * a * c;
float kg = (float) Math.sqrt(derta);

// System.out.println(derta);
// System.out.println(kg);

if (200 >= a && a >= -200 && 200 >= b && b >= -200 && 200 >= c && c >= -200) {
if (derta < 0) {
System.out.println("方程组无实数根");
} else if (derta == 0) {
System.out.println("方程组有两个相同等的实数根为,X=" + (-b / (2 * a)));
} else if (derta > 0) {
System.out.println("方程组有两个不相等的根,X1=" + ((-b + kg) / (2 * a)) + ",X2=" + ((-b - kg) / (2 * a)));
}
} else {
System.out.println("输入有误");
}
}
}

switch语句

语句格式

1
2
3
4
5
6
7
8
9
10
11
12
13
switch(表达式){ 
case1
语句体1
break
case2
语句体2
break
......
case 值n:
语句体n;
break//可省略

}

格式说明

  • case:后面跟的是要和表达式进行比较的值
  • break:表示中断结束的意思,用来结束switch语句
  • default:表示所有情况都不匹配的时候就执行该处的内容

执行流程

  1. 首先计算表达式的值

  2. 依次和case后面的值进行比较如果有对应的值就会执行相应的语句在执行的过程中遇到break就会结束

  3. 如果所有的case后面的值和表达式都不匹配就会执行default里面的语句体然后程序结束

    Java switch语句

案例

输出对应的星期数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.util.Scanner;
public class switchtest {
public static void main(String[] args) {
System.out.println("开始");

//需求:键盘录入一个星期数,输出对应的星期
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;
}
System.out.println("结束");
}

}

case穿透

  • case1:

    case2:

    case3:

    ​ 语句体;

    ​ break;

输出对应的季节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Scanner;
public class switchtest {
public static void main(String[] args) {
System.out.println("开始");

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个月数(1-12)");

int mouth = sc.nextInt();

switch (mouth){
case 2:
case 3:
case 4:
System.out.println("春季");
break;
case 5:
case 6:
case 7:
System.out.println("夏季");
break;
case 8:
case 9:
case 10:
System.out.println("秋季");
break;
case 11:
case 12:
case 1:
System.out.println("冬季");
break;
default:
System.out.println("输入的月份有误");
break;
}
System.out.println("结束");
}