Java-4流程控制

流程控制:

程序需要根据不同的条件去进行不同的流程处理,在程序中我们称之为流程控制。
举例:用户输入4位卡号,每位数字之和大于20,中奖,小于20则不中奖。

if

语法:
if(判断条件){
//条件成立
}else{
//条件不成立
}

if-esle是Java中最基本的流程控制语句
if后面必须跟(条件)
else后面不能有(),可以直接跟{}
也可以再跟一个if()
else{}可以继续嵌套if语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 学校举办运动会,百米赛跑成绩13秒以内有资格进入决赛,根据性别分别进入男子组和女子组。
public class Test3 {
public static void main(String[] args) {
System.out.println("请输入张三的百米成绩");
Scanner scanner = new Scanner(System.in);
int score = scanner.nextInt();
System.out.println("请输入张三的性别");
String gender = scanner.next();

if(score<13) {
if(gender.equals("男")) {
System.out.println("进入男子组");
}else {
System.out.println("进入女子组");
}
}else {
System.out.println("很遗憾,你被淘汰了!!!");
}

}
}

String类型的值比较是否相等
不能用 ==
应该用equals方法进行判断

switch case

语法:
switch(要判断的变量){
case 特定值1:
//
case 特定值2:
//

}
switch-case和if-else的区别是
switch-case只能处理等值判断,不能处理大于/小于判断
if-else任何判断都可以处理

如果变量满足某个case语句,
则会执行该语句的逻辑代码,同时
该case之后的所有case不再做判断,
统一认为全部满足,逻辑代码都会执行。

如何解决:
在每一个case的逻辑代码结束之后,添加break;

switch支持的数据类型:
int,short,byte,char
枚举类型,String类型 (jdk1.7之后的版本支持)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Test4 {
public static void main(String[] args) {
System.out.println("请输入一个数字");
Scanner scanner = new Scanner(System.in);
String str = "";
switch(str) {
case "1":
System.out.println("中了一个三等奖");
break;
case "20":
System.out.println("中了二等奖");
break;
case "30":
System.out.println("中了一等奖");
break;
default:
System.out.println("很遗憾,您没有中奖!");
break;
}

}
}

循环

for
foreach:增强型for循环
while
do-while

语法:

for:
for(初始化循环变量;循环条件;更新循环变量){
循环体;
}

while:
初始化循环变量;
while(循环条件){
循环体;
更新循环变量;
}

do-while:
初始化循环变量;
do{
循环体;
更新循环变量;
}while(循环条件);

while和do-while的区别

while循环先判断,再执行。
do-while先执行,再判断。
while有可能一次都不执行。
do-while至少会执行一次。

for循环和while(do-while)的区别:

for适用于次数确定的循环
while,do-while适用于次数不确定的循环

循环四要素:

1.初始化循环变量;
2.循环条件;
3.迭代:更新循环变量;
4.循环体;

首先执行初始化循环变量,只执行一次。
判断循环条件是否成立,如果成立,执行循环体,
如果不成立,进行下一次循环,多次执行。
更新循环变量,多次执行。
循环体,多次执行

1
2
3
4
5
6
7
public class Test5 {
public static void main(String[] args) {
for(int i = 1;i <= 10000;i++) {
System.out.println(i+":Hello World");
}
}
}

🌰

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
// 1.循环输入张三考试的五门成绩,分别打印输出,并且计算平均分。
import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float score1 = 0.0f;
float score2 = 0.0f;
float score3 = 0.0f;
float score4 = 0.0f;
float score5 = 0.0f;
for(int i = 1; i <= 5; i++) {
System.out.print("请输入张三的第"+i+"门成绩:");
switch(i) {
case 1:
score1 = scanner.nextFloat();
break;
case 2:
score2 = scanner.nextFloat();
break;
case 3:
score3 = scanner.nextFloat();
break;
case 4:
score4 = scanner.nextFloat();
break;
case 5:
score5 = scanner.nextFloat();
break;
}
}
System.out.println("张三的第1门成绩:"+score1);
System.out.println("张三的第2门成绩:"+score2);
System.out.println("张三的第3门成绩:"+score3);
System.out.println("张三的第4门成绩:"+score4);
System.out.println("张三的第5门成绩:"+score5);
System.out.println("张三的平均成绩是"+(score1+score2+score3+score4+score5)/5);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 2.任意输入一个整数:6
// 打印如下的加法表:
// 0 + 6 = 6
// 1 + 5 = 6
// 2 + 4 = 6
// 3 + 3 = 6
// 4 + 2 = 6
// 5 + 1 = 6
// 6 + 0 = 6

import java.util.Scanner;

public class Test4 {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
for(int i = 0; i < num+1; i++) {
System.out.println(i + "+" + (num-i) + "=" + num);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 3.打印:如下图形
// *****
// *****
// *****
// *****
// *****

public class Test7 {
public static void main(String[] args) {
for(int j = 0; j < 5; j++) {
//输出空格
for(int i = 0; i < 4 - j; i++) {
System.out.print(" ");
}
System.out.println("*****");
}
}
}
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
// 4.打印如下图形
// i 空格 *
// * 0 4 1
// *** 1 3 3
// ***** 2 2 5
// ******* 3 1 7
// ********* 4 0 9

public class Test8 {
public static void main(String[] args) {
for(int i = 0 ;i < 5; i++) {
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
//输出*
for(int k = 0; k < 2*i+1; k++) {
System.out.print("*");
}
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
System.out.println();
}
}
}
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
41
42
43
44
45
46
47
48
// 5.打印如下图形
// *
// ***
// *****
// *******
// *********
// *******
// *****
// ***
// *

public class Test9 {
public static void main(String[] args) {
//上半部分
for(int i = 0 ;i < 5; i++) {
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
//输出*
for(int k = 0; k < 2*i+1; k++) {
System.out.print("*");
}
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
System.out.println();
}

//下半部分
for(int i = 0 ;i < 4; i++) {
//输出空格
for(int j = 0; j < i+1; j++) {
System.out.print(" ");
}
//输出*
for(int k = 0; k < 7-2*i; k++) {
System.out.print("*");
}
//输出空格
for(int m = 0; m < i+1; m++) {
System.out.print(" ");
}
System.out.println();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 6.输出9*9乘法口诀表
// 1*1 = 1
// 2*1 = 2 2*2 = 4
// 3*1 = 3 3*2 = 6 3*3 = 9
// ...

public class Test10 {
public static void main(String[] args) {
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
System.out.print(i+" * "+j+" = "+i*j+"\t");
}
System.out.println();
}
}
}
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
41
42
43
44
45
46
47
48
49
50
51
52
// 7.循环输入张三考试的五门成绩,分别打印输出,并且计算平均分,如果操作不当,输入了负数,停止录入并提示错误。
import java.util.Scanner;

public class Test11 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float score1 = 0.0f;
float score2 = 0.0f;
float score3 = 0.0f;
float score4 = 0.0f;
float score5 = 0.0f;
//用户是否输入了负数
boolean flag = false;
for(int i = 1; i <= 5; i++) {
System.out.print("请输入张三的第"+i+"门成绩:");
float score = scanner.nextFloat();
//如果输入的成绩<0,则跳出循环
if(score < 0) {
flag = true;
// 当程序执行break时,直接停止当前循环,break之后的代码,不再执行;同时跳出整个循环体,不再执行后续的循环。
break;
}
switch(i) {
case 1:
score1 = score;
break;
case 2:
score2 = score;
break;
case 3:
score3 = score;
break;
case 4:
score4 = score;
break;
case 5:
score5 = score;
break;
}
}
if(flag) {
System.out.println("您输入有误!请重新输入");
}else {
System.out.println("张三的第1门成绩:"+score1);
System.out.println("张三的第2门成绩:"+score2);
System.out.println("张三的第3门成绩:"+score3);
System.out.println("张三的第4门成绩:"+score4);
System.out.println("张三的第5门成绩:"+score5);
System.out.println("张三的平均成绩是"+(score1+score2+score3+score4+score5)/5);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 8.计算1-10之间的整数之和,如果得到的累加值大于30,则停止循环,返回当前累加值。
public class Test12 {
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 10; i++) {
sum += i;
if(sum > 30) {
sum -= i;
break;
}
}
System.out.println(sum);
}
}

评论