Java基础语法(三、流程控制语句)
流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,所以,我们必须清楚每一条语句的执行流程。而且,很多时候要通过控制语句的执行顺序类实现我们想要的功能。
流程控制语句分类
- 顺序结构
- 选择结构
- 循环结构
1、顺序结构
顺序结构是程序中最简单最基本的流程控制,通常情况下,代码都是由上往下、由左往右,依次执行。
2、选择结构
也叫分支结构,根据条件的不同选择执行不同的代码
if语句
格式一:
if(关系表达式){
语句体
}
- 执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体
- 如果关系表达式的值为false就不执行语句体
- 继续向下执行后面的语句内容
格式二:
if(关系表达式){
语句体1;
}else{
语句体2;
}
- 执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体1
- 如果关系表达式的值为false就执行语句体2
- 继续向下执行后面的语句
实例:键盘输入一个数,使用程序判断是奇数还是偶数。
import java.util.Scanner;
public class Test2{
public static void main(String[]args){
System.out.print("请输入一个整数:");
Scanner input = new Scanner(System.in);
int x = input.nextInt();
if(x%2==0){
System.out.println(x+"是一个偶数");
}else{
System.out.println(x+"是一个奇数");
}
}
}
格式三
if(关系表达式1){
语句体1
}else if(关系表达式2){
语句体2
}
…
else{
语句体n+1;
}
- 执行流程:
- 首先计算关系表达式的值
- 如果关系表达式1的值为true就执行语句体1
- 如果关系表达式的值为false就执行关系表达式2
- 关系表达式2的的值为true就执行语句体2
- 关系表达式2的值为false就执行下一个else if的关系表达式3,以此类推…
- 如果else if中的关系表达式都不成立就执行最后else的语句体
switch语句
switch语句结构
格式:
switch (表达式) {
case 1:
语句体1;
break;
case 2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
- 执行流程
- 首先计算出表达式的值(可以是byte、short、int、char、String、enum这几种类型)
- 然后和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束
- 最后如果所有case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束。
switch语句练习
- 实例:根据输入的月份判断该月份属于那个季节
import java.util.Scanner;
public class Test3{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入一个月份:");
int num = input.nextInt();
switch(num){
case 3:
case 4:
case 5:
System.out.println("春");
break;
case 6:
case 7:
case 8:
System.out.println("夏");
break;
case 9:
case 10:
case 11:
System.out.println("秋");
break;
case 12:
case 1:
case 2:
System.out.println("冬");
break;
default:
System.out.println("你输入的月份有误!");
break;
}
}
}
3、循环结构
循环语句可以在满足条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
for循环
格式:
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
- 说明:
- 初始化语句:用于循环开始时的起始状态
- 条件判断语句:用于循环反复执行的条件
- 循环体语句:用于循环反复执行的内容
- 条件控制语句:用于每次循环执行中变换的内容
- 执行流程
- 1先执行初始化语句
- 2执行判断语句,false循环结束,true继续执行
- 3执行循环体语句
- 4执行条件控制语句
- 5再次从2执行,直到2的判断语句为false结束循环
练习:
- 求1~100之间的偶数和,将最终结果输出
public class Test4 {
public static void main(String[] args) {
//定义一个变量,保存每次循环获得的偶数和
int sum = 0;
//i从1到100循环100次
for(int i=1; i<=100; i++) {
//判断i是否是偶数,如果是偶数加到sun变量中
if(i%2 == 0) {
sum += i;
}
}
System.out.println("1-100之间的偶数和是:" + sum);
}
}
while循环
结构:
初始化语句;
while (条件判断语句) {
循环体语句;
条件控制语句;
}
- 执行流程:
- 1首先执行初始化语句
- 2执行条件判断语句,false结束循环,true继续执行
- 3执行循环体语句
- 4执行条件控制语句
- 5再次从2执行,直到2的判断语句为false结束循环
练习
- 珠穆朗玛峰的高度为8844.43(8844430毫米)米,假如有一张足够大的纸,它的厚度是0.1毫米,求对折几次才能超过珠穆朗玛峰的高度?
public class Test5{
public static void main(String[]args){
//定义一个变量,用来计对折次数
int num = 0;
double zf = 8844430;
double paper= 0.1;
//纸张厚度小于等于珠峰执行条件,当纸张厚度大于珠峰停止循环
while(paper<=zf){
//每次循环对折次数加一厚度加倍
paper*=2;
num++;
}
System.out.println("需要折叠"+num+"次");
System.out.println("此时纸的高度为:"+paper);
}
}
do…while循环
结构:
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
- 执行流程:
- 1执行初始化语句
- 2执行循环体语句
- 3执行条件控制语句
- 4执行条件判断语句,false结束循环,true继续执行
- 5再次从2执行,直到2的判断语句为false结束循环
实例
在控制台打印五次Hello World
public class Test6{
public static void main(String[]args){
int i=1;
do{
System.out.println("Hello World");
i++;
}while(i<=5);
}
}
三种循环的区别
- for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行),do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
- for循环和while循环的区别
- for循环中,条件控制语句中的自增变量属于for循环结构中,for循环结束后,就不能使用了(能够提高内存的使用效率)
- while循环中,条件控制语句中的自增变量不在while循环结构中,while循环结束后,变量还可以继续使用
- 死循环的三种格式:
- for(;;){}
- while(true){}
- do {} while(true);
跳转控制语句
- break 跳出循环结构,结束循环
- continue 跳出本次循环,执行下一次循环
嵌套循环
在循环中继续定义循环,实现更复杂的要求。do…while、while、for都能进行嵌套,它们相互之间也可以嵌套,最常见的for循环中嵌套for循环。
实例:
九九乘法表
public class Test7{
public static void main(String[]args){
//循环九次实现九行
for(int i=1;i<=9;i++){
//根据第几行实现共几列结果
for(int j=1;j<=i;j++){
System.out.print(j+"+"+i+"="+i*j+"\t");
}
//一行打印完毕,进行换行
System.out.println();
}
}
}