一、程序控制介绍
程序运行的流程控制决定程序是如何执行的,其主要分为三种
- 顺序控制
- 分支控制
- 循环控制
二、顺序控制
顺序控制顾名思义程序是按从上到下顺序逐行地执行,中间没有任何判断和跳转。
int a = 1;
int b = a+1; //正确
int b = c+1; //错误
int c = 1;
三、分支控制
1.单分支( if )
基本格式:
if(条件表达式){
代码块1;
}
说明:当条件表达式为真(true)时则执行代码块1的内容
if (2>1) {
System.out.println("2比1大!");
}
2.双分支( if-else )
基本格式:
if(条件表达式){
代码块1;
}else{
代码块2;
}
说明:当条件表达式为真(true)时则执行代码块1的内容,否则执行代码块2的内容。
if (2>1) {
System.out.println("2比1大!");
}else{
System.out.println("1比2大!");
}
3.多分支( if-else if-…-else )
在一个分支结构中又完整的嵌套了另一个完整的分支结构,以此类推。
基本格式:
if(条件表达式){
if()…else…;
}else{
if()…else…;
}
if (2>1) {
if (3>1) {
System.out.println("2和3比1大!");
};
}else{
System.out.println("1比2大!");
}
4.switch分支结构
基本格式:
switch(表达式){
case 常量1:
语句1;
break;
…
case 常量n:
语句n;
break;
default:
default语句块;
break;
}
说明:
- 当表达式中的值等于常量1时则执行语句1,break退出switch
- 当表达式中的值不等于常量1时则匹配常量2,以此类推
- 当表示不等于 常量1到n中任意一个值时,则执行default语句块,break退出switch
import java.util.Scanner;
public class test{
public static void main(String[] args) {
Scanner x = new Scanner(System.in);
System.out.println("请输入数字1-3");
int y = x.nextInt();
switch(y){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
default:
System.out.println("输入有误!");
break;
}
}
}
四、循环控制
1.for循环
基本格式:
for(初始化变量;循环条件;循环变量迭代){
循环操作代码块;
}
注意事项:
- 循环条件是返回一个布尔值的表达式
- for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略
- 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代 语句,中间用逗号隔开。
//执行了三次循环
for(int count=0,i=0,j=0;count<3;count++,i++,j += 2){
System.out.println("i="+i); //0 1 2
System.out.println("j="+j); //0 2 4
}
2.while循环
基本格式:
while(循环条件){
循环操作代码块;
循环变量迭代;
}
注意事项:
- 循环条件是返回一个布尔值的表达式
- while 循环是先判断再执行语句
- 一定要有循环变量迭代,否则就会变成死循环
//输出1-10中能被2整除的数
int i = 1;
while(i<=10){
if (i%2==0){
System.out.println(i); //2 4 6 8 10
}
i++;
}
3.do…while循环
基本格式:
do {
循环操作代码块;
循环变量迭代;
}while(循环条件);
注意事项:
- 循环条件是返回一个布尔值的表达式
- do…while 循环是先执行,再判断, 因此它至少执行一次(注意)
- 一定要有循环变量迭代,否则就会变成死循环
//输出1-10中能被2整除的数
int i = 1;
do{
if (i%2==0){
System.out.println(i);
}
i++;
}while(i<=10);
4.练习题
打印九九乘法表
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*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
*/
五、循环中break和continue的使用
- break:退出循环结构,一般使用在 switch 或者循环[for , while , do-while]中。
for (int i=1;i<10;i++ ) {
if (i==5) {
break;
}else{
System.out.println(i); //1 2 3 4
}
}
- continue:结束循环结构中本次的循环,继续下一次循环。
for (int i=1;i<10;i++ ) {
if (i==5) {
continue;
}else{
System.out.println(i); //1 2 3 4 6 7 8 9
}
}