# 流程控制语句
# if, if else
if (BooleanConditionalExpression) {
// do something
} else {
// do something
}
if (BooleanConditionalExpression1) {
// do something
} else if (BooleanConditionalExpression2) {
// do something
} else {
// do something
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# switch
switch (Expression) {
case Value1:
// do something
break;
case Value1:
// do something
break;
default:
// do something
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# while
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
int j = 2;
int sum = 0;
do {
sum += j;
j += 2;
System.out.println(sum);
} while (j <= 50);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# for
for (循环变量初始化; 循环条件; 循环变量变化) {
// 循环操作
}
1
2
3
2
3
执行过程:
1、执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次
2、进行循环条件的判断,如果条件为 true ,则执行循环体内代码;如果为 false ,则直接退出循环
3、执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断
4、依次重新执行< 2 >、< 3 >、< 4 >,直到退出循环
特点:
相比 while 和 do...while 语句结构更加简洁易读
注意:
1、for 关键字后面括号中的三个表达式必须用 “;” 隔开,三个表达式都可以省略,但 “;” 不能省略。
a. 省略“循环变量初始化”,可以在 for 语句之前由赋值语句进行变量初始化操作,如:
int i = 0;
for (; i < 10; i++) {
// do something
}
1
2
3
4
2
3
4
b. 省略“循环条件”,可能会造成循环将一直执行下去,也就是我们常说的“死循环”现象,如:
for (int i = 0; ; i++) {
// do something
}
1
2
3
2
3
在编程过程中要避免“死循环”的出现,因此,对于上面的代码可以在循环体中使用 break 强制跳出循环。
c. 省略“循环变量变化”,可以在循环体中进行循环变量的变化,如:
for (int i = 0; i < 5; ) {
// do something
i++;
}
1
2
3
4
2
3
4
2、for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:
for (int i = 1, j = 5; i < 5; i++, j--) {
// do something
}
1
2
3
2
3
代码中,初始化变量部分同时对两个变量 i 和 j 赋初值,循环变量变化部分也同时对两个变量进行变化。
3、循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级,如:
for (int i = 1; i < 10 && i != 5; i++) {
// do something
}
1
2
3
2
3
代码中,必须同时满足变量 i 小于 10 ,并且 i 不等于 5 时才会进行循环,输出变量 i 的值。
# break
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
// result: 0 1 2 3 4
1
2
3
4
5
6
7
2
3
4
5
6
7
# continue
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
System.out.println(i);
}
// result: 0 1 2 3 4 6 7 8 9
1
2
3
4
5
6
7
2
3
4
5
6
7
# 编程题
/*
* 为指定成绩加分,直到分数大于等于 60 为止,
* 输出加分前和加分后的成绩,并统计加分的次数
*/
1
2
3
4
2
3
4
Test1.java
package com.test1;
import java.util.Scanner;
/*
* 为指定成绩加分,直到分数大于等于 60 为止,
* 输出加分前和加分后的成绩,并统计加分的次数
*/
/*
* 使用Scanner工具类来获取用户输入的成绩信息
* Scanner类位于java.util包中,使用时需要导入
* 步骤:
* 1.导入java.util.Scanner
* 2.创建Scanner对象
* 3.接收并保存用户输入的值
*/
public class Test1 {
public static void main(String[] args) {
// create Scanner Object
Scanner input = new Scanner(System.in);
// notice
// println输出后会换行,print不会
System.out.print("请输入考试成绩(整数):");
// score
// get user input score, and save to variable
int score = input.nextInt();
// count
int count = 0;
System.out.println("origin score: " + score);
while (score < 60) {
count++;
score++;
}
System.out.println("result score: " + score);
System.out.println("count times: " + count);
}
}
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
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
/*
* 求3个班级,各4名学生的平均成绩
*/
1
2
3
2
3
Test2.java
package com.test2;
import java.util.Scanner;
/*
* 求3个班级,各4名学生的平均成绩
*/
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int classNum = 3;
int studentNum = 4;
int score;
double sum;
double avgs;
for (int i = 1; i <= classNum; i++) {
sum = 0;
System.out.println("**请输入第" + i + "个班级的成绩");
for (int j = 1; j <= studentNum; j++) {
System.out.print("请输入第" + j + "位学生的成绩(整数):");
score = input.nextInt();
sum += score;
}
avgs = sum / studentNum;
System.out.println(i + "班总分为"+ sum +",平均分为" + avgs);
}
}
}
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
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