- 程序流程控制
- 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
语法:
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. 三种循环对比
4. break区别1:语法
区别2:执行顺序
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行
区别3:适用情况
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环
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("分数录入有误,不再计算平均分");
}
}
}



