栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

4.程序流程控制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

4.程序流程控制

程序流程控制

文章目录
    • 程序流程控制
      • 1. 分支结构
        • 1.1 基本if结构
        • 1.2 if-else结构
        • 1.3 多重if
        • 1.4 嵌套if
        • 1.5 switch结构
      • 2. 循环
        • 2.1 while循环
        • 2.2 do-while循环
        • 2.3 for循环
      • 3. 三种循环对比
      • 4. break

1. 分支结构 1.1 基本if结构

语法:
if(布尔表达式){
​ //代码块1
}

后续代码…
执行流程:
对布尔表达式进行判断。
结果为true,则先执行代码块1,再执行后续代码。
结果为false,则跳过代码块1,直接执行后续代码。

import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		// 创建Scanner类型的变量
		Scanner input = new Scanner(System.in); // ctrl + 1回车 实现导包
	
		System.out.println("请输入您的年龄");
		
		int age = input.nextInt();
		
		if(age >= 18) {
			System.out.println("恭喜你,成年了");
		}
		
		System.out.println("程序结束");
	}
}
1.2 if-else结构

语法:
if(布尔表达式){
​ //代码块1
}else{
​ //代码块2
}
后续代码…
执行流程:
对布尔表达式进行判断。
结果为true,则先执行代码块1,再退出整个结构,执行后续代码。
结果为false,则先执行代码块2,再退出整个结构,执行后续代码。

else不能单独出现 必须结合if结构或者else - if结构

import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		// 创建Scanner类型的变量
		Scanner input = new Scanner(System.in); // ctrl + 1回车 实现导包
	
		System.out.println("请输入您的年龄");
		
		int age = input.nextInt();
		
		if(age >= 18) {
			System.out.println("恭喜你,成年了");
		}else {
			System.out.println("未成年");
		}
		
		System.out.println("程序结束");
	}
}
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入Java成绩");
		
		double javaScore = input.nextDouble();
		
		System.out.println("请输入数据库成绩");
		
		double mysqlScore = input.nextDouble();
		
		System.out.println("请输入HTML成绩");
		
		double htmlScore = input.nextDouble();
		
		System.out.println("请输入JS成绩");
		
		double jsScore = input.nextDouble();
		
		
		if((javaScore > 95 && mysqlScore > 85)  || (htmlScore == 100 && jsScore > 75)) {
			System.out.println("非常好");
		}else {
			System.out.println("继续加油");
		}
		
		System.out.println("程序结束");
	}
}
1.3 多重if

语法:
if(布尔表达式1){
​ //代码块1
}else if(布尔表达式2){
​ //代码块2
}else if(布尔表达式3){
​ //代码块3
}else{
​ //代码块4
}

执行流程:
表达式1为true,则执行代码块1,再退出整个结构。

表达式2为true,则执行代码块2,再退出整个结构。

表达式3为true,则执行代码块3,再退出整个结构。

以上均为false,则执行代码块4,再退出整个结构。

注意:相互排斥,有一个为true,其他均不再执行,
适用于区间判断。

import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入您的成绩");
		
		int score = input.nextInt();
		
		if(score > 80) {
			System.out.println("良好");
		}else if(score > 90) {
			System.out.println("优秀");
		}else if(score > 70) {
			System.out.println("中等");
		}else if(score >= 60) {
			System.out.println("及格");
		}else {
			System.out.println("不及格");
		}
		
		System.out.println("程序结束");
	}
}
1.4 嵌套if

语法:
if(外层表达式){
​ if(内层表达式){
​ //内层代码块1
​ }else{
​ //内层代码块2
​ }
}else{
​ //外层代码块
}

执行流程:
当外层条件满足时,再判断内层条件。

注意:
一个选择结构中,可嵌套另一个选择结构。
嵌套格式正确的情况下,支持任意组合。

import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入成绩");
		
		double time = input.nextDouble();
		
		if(time < 13) {
			System.out.println("恭喜你,进入决赛");
			
			System.out.println("请输入性别");
			
			String sex = input.next();
			
			// 分组
			// 判断字符串是否与某一个内容相同  使用equals 
			// 使用 变量名.equals("比较的内容")
			if(sex.equals("男")) {
				System.out.println("进入男子组");
			}else if(sex.equals("女")){
				System.out.println("进入女子组");
			}else {
				System.out.println("暂未开放第三性别");
			}
			
		}else {
			System.out.println("很遗憾,下次继续加油");
		}
		
		System.out.println("程序结束");	
	}
}
1.5 switch结构

语法:
switch(变量|表达式){
​ case 值1:
​ 逻辑代码1;
​ case 值2:
​ 逻辑代码2;
​ case 值n:
​ 逻辑代码n;
​ default:
​ 未满足时的逻辑代码;
}

可判断的类型:
byte、short、int、char、String(JDK7+),枚举

执行流程:
如果变量中的值等于值1,则执行逻辑代码1。
如果变量中的值等于值2,则执行逻辑代码2。
如果变量中的值等于值n,则执行逻辑代码n。
如果变量中的值没有匹配的case值时,执行default中的逻辑代码。

注意:所有case的取值不可相同。

switch用于处理某个值属于固定等值的情况

switch中的default可以省略,根据需求是否书写。default的位置不固定,但是推荐写在所有的case之后,如果需要每种情况都独立,那么default之后也要加上break。

import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);

		System.out.println("请输入名次");

		int num = input.nextInt();

		switch(num) {
		
		case 1:
			System.out.println("夏令营");
			break;
		case 2:
			System.out.println("苹果12袋");
			break;
		case 3:
			System.out.println("笔记本一本");
			break;
		case 4:
			System.out.println("口头表扬一次");
			break;
		default:
			System.out.println("继续加油");
			break;
		}

		System.out.println("程序结束");
	}
}
2. 循环 2.1 while循环

计数器初始化;

while ( 循环条件 ) {
​
​ 循环操作

}

while:当……

任何循环都必不可少的四个条件:

1.计数器初始化

2.判断条件

3.循环体

4.计数器变化

while循环可以用于处理循环次数确定以及不确定的情况,通常用来处理循环次数不确定的情况

public class Test {
	public static void main(String[] args) {
		// 计数器初始化
		int i = 1;
		
		while(i <= 10) { // 判断条件
			System.out.println("第" + i + "遍好好学习"); // 循环体
			i++; // 计数器变化
		}
		
		System.out.println("程序结束");		
	}
}
import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		System.out.println("请问你今天学习任务合格了吗?y/n");
		
		String answer = input.next();
		
		while(answer.equals("n")) {
			System.out.println("上午阅读教材,下午敲代码");
			
			System.out.println("请问你今天学习任务合格了吗?y/n");
			
			answer = input.next();
		}		
		System.out.println("恭喜你完成任务");
	}
}
2.2 do-while循环

计数器初始化;

do {

​ 循环操作

} while ( 循环条件 );

do-while是先执行 后判断 不管条件是否成立 至少执行一次

do-while可以处理循环次数确定或者不确定的情况 通常用来处理循环次数不确定的情况

因为循环次数确定的情况 使用for循环书写更为简洁

while和do-while的区别?

while循环是先判断后执行 条件不成立 一次都不执行

do-while先执行后判断 不管条件是否成立 至少执行一次

import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		String answer;
		
		do {
			System.out.println("上机编写测试");
			
			System.out.println("是否合格?y/n");
			
			answer = input.next();
			
		}while(answer.equals("n"));
				
		System.out.println("恭喜你完成任务");
	}
}
public class Test {
	public static void main(String[] args) {
		int i = 1;
		do {
			System.out.println("第" + i + "遍好好学习");
			i++;
		}while(i <= 1000);
		
		System.out.println("程序结束");
	}
}
2.3 for循环

循环次数固定,for比while更简洁

for循环执行过程:

第一轮:

1.计数器初始化(只执行一遍)

2.判断条件

3.循环体

4.计数器变化

第二轮:

从判断条件开始执行

public class Test {
	public static void main(String[] args) {
		for(int i = 1;i <= 1000;i++) {
			System.out.println("第" + i + "遍好好学习");
		}
	}
}
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		double sum = 0;
		
		for(int i = 1;i <= 5;i++) {
			System.out.println("请输入第" + i + "门成绩");
			
			double score = input.nextDouble();
			
			sum = sum + score; // sum += score;
		}
		
		System.out.println("平均分是" + sum / 5);
	}
}
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		
		System.out.println("请输入一个数字");
		
		int num = input.nextInt();
		
		for(int i = 0;i <= num;i++) {
			System.out.println(i + "+" + (num - i) + "=" + num);
		}
		
		input.close(); // 关闭input流  避免警告
		
		System.out.println("程序结束");
	}
}
3. 三种循环对比

区别1:语法

区别2:执行顺序
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行

区别3:适用情况
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环

4. break

break关键字:break可以用于switch或者循环中

在switch中表示跳出switch结构

在循环中表示中断循环 未执行完的循环次数 不再执行

在循环中使用break,通常结合分支语句来使用

public class Test {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			System.out.println("跑步第" + i + "圈");
			
			if(i == 5) {
				System.out.println("太累了,跑不动了");
				break;
			}
			
		}
		System.out.println("程序结束");	
	}
}
import java.util.Scanner;


public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		int sum = 0;
		
		boolean flag = true; // 定义一个变量 作为标记 用于标记分数是否有负数的情况
		
		for(int i = 1;i <= 5;i++) {
			System.out.println("请输入第" + i + "门成绩");
			
			int score = input.nextInt();
			
			if(score < 0) {
				flag = false;
				System.out.println("分数输入有误:不能为负数");
				break;
			}
			sum += score;
		}
		
		if(flag) { // flag == true
			System.out.println("平均分是:" + sum / 5);
		}else {
			System.out.println("分数录入有误,不再计算平均分");
		}
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988354.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号