Java中控制结构

顺序控制

程序自上而下的执行,中间没有任何判断和跳转

观察以下两个程序,可以发现程序2违反了正常的逻辑规则,在未知的情况下num1的情况下就运行num2

1
2
3
4
5
6
7
public class Test {
public static void main(String [] args){
int num1=1;
int num2=num1+1;
System.out.println(num2);
}
}

image-20220703175326334

1
2
3
4
5
6
7
public class Test {
public static void main(String [] args){
int num2=num1+1;
int num1=1;
System.out.println(num2);
}
}

image-20220703175333923

分支控制(if-else与switch)

分支控制if-else(让程序有选择的执行)

单分支/双分支:

if(满足条件){执行代码块,可以有多个语句};else{执行代码块(不满足条件时)}

1
2
3
4
5
6
7
public class Test {
public static void main(String [] args){
int a=0;
if (a==0){System.out.println("满足前面的表达式,a为0");}
else{System.out.println("a不为0,不满足if表达式");}
}
}

image-20220703175357742

多分枝:if ——else if——elseif……else

1
2
3
4
5
6
7
8
9
public class Test {
public static void main(String [] args){
int a=2;
if (a==0){System.out.println("满足前面的表达式,a为0");}
else if(a==1){System.out.println("a=1");}
else if(a==2){System.out.println("a=2");}
else{System.out.println("a不为0,不满足if表达式");}
}
}

image-20220703175420219

嵌套分支:if(表达式){if(表达式){};}——else,建议嵌套不要超过三层

1
2
3
4
5
6
7
8
9
public class Test {
public static void main(String [] args){
int a=2;
int b=3;
if (a==2){if (b==3){System.out.println("a等于2,并且b等于3");}}
else{System.out.println("ab其中一个不满足条件");}

}
}

image-20220703175446129

Switch分支结构

用一个大家经常见到的例子来讲解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
public class Test {
public static void main(String [] args){
Scanner testNumJudge=new Scanner(System.in);
System.out.println("请输入您的成绩");
int testNum=testNumJudge.nextInt();
switch (testNum/10){
case 9:System.out.println("你考的非常好");break;
case 8:System.out.println("你考的不错");break;
case 7:System.out.println("你考的还可以");break;
case 6:System.out.println("你刚刚及格");break;
default:System.out.println("准备补考吧,小伙子");
}


}
}

image-20220703175504436

循环控制结构

for循环控制结构

for(循环变量初始化;循环条件:循环变量迭代){操作语句

}

1
2
3
4
5
6
7
public class Test {
public static void main(String [] args){
for(int i=0, k=1;i<10&k<11;i++,k++){
System.out.println("我是i="+i+"\t我是k="+k);
}
}
}

image-20220703175522530

while循环控制结构

while(循环条件){循环体(语句);循环变量迭代}

1
2
3
4
5
6
7
8
9
public class Test {
public static void main(String [] args){
int i=0;int j=1;
while(i<10&j<11){
System.out.println("我是i="+i+"\t我是j="+j);
i++;j++;
}
}
}

image-20220703175534303

do while循环控制

do{循环体,循环迭代变量}while(循环条件),先循环一次在进行判断,一定会执行一次。看以下下面这个程序,发现根本不符合条件,但是还是执行了一次。

1
2
3
4
5
6
7
8
9
10
public class Test {
public static void main(String [] args){
int i=0;int j=1;
do {
System.out.println("我是i="+i+"\t我是j="+j);
}
while(i<-1);

}
}

image-20220703175544737

多重循环控制

上述三种循环控制结构相互嵌套包含

1
2
3
4
5
6
7
8
9
10
public class Test {
public static void main(String [] args){
for (int i=1;i<10;i++){
System.out.println("我是i="+i);
for (int j=1;j<=2;j++){
System.out.println("我是第"+i+"个i下面的第"+j+"个j");
}
}
}
}

image-20220703175556772

break需求

结束这个循环,可以看出输出到5就不在进行输出了

1
2
3
4
5
6
7
8
9
10
public class Test {
public static void main(String [] args){
for (int i=0;i<10;i++){
System.out.println(i);
if (i==5){
break;
}
}
}
}

image-20220703175605105

continue需求

结束本次循环,可以看出本次循环中5并没有输出,直接跳出了本次循环

1
2
3
4
5
6
7
8
9
10
public class Test {
public static void main(String [] args){
for (int i=0;i<10;i++){
if (i==5){
continue;
}
System.out.println(i);
}
}
}

image-20220703175617131

利用循环结构打印出三种进阶的金字塔

难看的金字塔

1
2
3
4
5
6
7
8
9
public class Test {
public static void main(String [] args){
for (int i=1;i<10;i=i+2){
for (int j=0;j<i;j++){
System.out.printf("*");}
System.out.println();
}
}
}

image-20220703175625783

真. 实心金字塔

1
2
3
4
5
6
7
8
9
10
11
12
public class Test {
public static void main(String [] args){
for (int i=1;i<10;i=i+2){
for (int j=0;j<i;j++){
for (int k=(10-i)/2;k>=0&j==0;k--){
System.out.printf(" ");
}
System.out.printf("*");}
System.out.println();
}
}
}

image-20220703175633525

真.空心金字塔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Test {
public static void main(String [] args){
for (int i=1;i<10;i=i+2){
for (int j=0;j<i;j++){
for (int k=(10-i)/2;k>=0&j==0;k--){
System.out.printf(" ");
}
if (j==0|j==i-1|i==10-1){System.out.printf("*");}
else {System.out.printf(" ");}
}
System.out.println();
}
}
}

image-20220703175641159