之前学会了运算符
从这里开始,就要进入判断和循环了!
流程控制语句:通过一些语句,控制程序的执行流程。
1. 顺序结构
public class Test {
public static void main(String[] args) {
System.out.println("努力做主人喜欢的事");
System.out.println("大小姐驾到!统统闪开!");
System.out.println("凛冬已至,故乡的梅花开了吗");
System.out.println("心怀不惧,方可翱翔于天际");
}
}
顺序结构是
Java
程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。
2. 分支结构
if
语句
为什么要有if
语句?
需求:定义变量记录女婿的酒量,如果女婿的酒量大于2斤,老丈人就搭理他,否否则就不搭理。
public class Test {
public static void main(String[] args) {
int wine = 1;
//判断 wine 是否大于2
//如果大于,就执行
System.out.println("小伙子,真不戳!");
}
}
if
语句就是用来判断的,他有三种形式:
1.If
语句的第一种格式
1.格式
if (关系表达式) {
语句体;
}
2.举例
if (酒量 > 2) {
System.out.println("小伙子,不错");
}
- 执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为
true
就执行语句体 - 如果关系表达式的值为
false
就不执行语句体 - 继续执行后面的其他语句
练习
老丈人选女婿
需求:键盘录入女婿酒量,如果大于2斤,老丈人就给出回应,反之不回应。
代码实现
import java.util.Scanner;
public class IfDemo1 {
public static void main(String[] args) {
//需求:键盘录入女婿酒量,如果大于2斤,老丈人就给出回应,反之不回应。
//if格式:
//if(关系表达式){
// //语句体;
//}
//分析:
//1.键盘录入女婿的酒量
Scanner sc = new Scanner(System.in);
System.out.println("请输入女婿的酒量");
int wine = sc.nextInt();
//2.对酒量进行判断
if (wine > 2) {
System.out.println("小伙子,还不错呦!!");
}
}
}
if
的注意事项:
- 大括号的开头可以另起一行书写,但是建议写在第一行的末尾。
- 在语句体中,如果只有一句代码,大括号可以省略不写**(不建议)**。
- 如果对一个布尔类型的变量进行判断,不要用
==
号,直接把变量写在小括号中即可。
错误示例:省略大括号导致报错
public class IfDemo2 {
public static void main(String[] args) {
int number = 10;
if (number >= 10)
int a = 100;//1.定义变量a 2.给变量a赋值为100.//报错
System.out.println("number大于等于10");
}
}
错误示例:判断布尔类型时
==
写为=
导致if
总会执行。
boolean flag = false;
if (flag = true) { //错误
System.out.println("flag的值为true");
修正:直接将变量放在()中即可
boolean flag = false;
if (flag) {
System.out.println("flag的值为true");
- 判断布尔类型本身即为
true
执行语句体,false
不执行。
考试奖励
public class Test1 {
public static void main(String[] args) {
//小红:如果你这次考试全班第一,我就做你女朋友
//分析:
//1.定义变量记录小明的名次
int ranking = 1;
//对小明的名次进行判断。
if (ranking == 1) {
System.out.println("小红成为了小明的女朋友");
}
}
}
自动驾驶
public class Test2 {
public static void main(String[] args) {
//汽车无人驾驶时会涉及大量的判断
//当汽车行驶时遇到了红绿灯,就会进行判断
//如果红灯亮,就停止
//如果黄灯亮,就减速
//如果绿灯亮,就行驶
//1.定义三个变量表示灯的状态
//true 亮 false 灭
boolean isLightGreen = false;
boolean isLightYellow = false;
boolean isLightRED = true;
//2.判断
//如果红灯亮,就停止
//如果黄灯亮,就减速
//如果绿灯亮,就行驶
if (isLightGreen) {
System.out.println("GoGoGo!!!");
}
if (isLightYellow) {
System.out.println("slow!!!");
}
if (isLightRED) {
System.out.println("stop!!!");
}
}
}
2.If
语句的第二种格式
if (关系表达式) {
语句体1;
}
else
{
语句体2;
}
- 执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为
true
,就执行语句体1 - 如果关系表达式的值为
false
,就执行语句体2 - 继续执行后面的其他语句
- 注:执行了语句体1就不会再执行语句体2了。
练习
吃饭
需求:键盘录入一个整数,表示身上的钱。
如果大于等于100块,就是网红餐厅。
否则,就吃经济实惠的沙县小吃。
代码实现
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
//需求:键盘录入一个整数,表示身上的钱。
//如果大于100块就吃网红餐厅
//否则,就吃经济实惠的沙县小吃
//分析:
//1.键盘录入一个整数,表示身上的钱。
Scanner sc = new Scanner(System.in);
System.out.println("请录入身上的钱");
int money = sc.nextInt();
//2.对钱进行判断(二选一)
if (money >= 100) {
System.out.println("吃网红餐厅");
}
else {
System.out.println("吃经济实惠的沙县小吃");
}
}
}
商品付款
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
/*在实际开发种,如果要根据两种不同的情况来执行不同的代码,就需要用到if的第二种格式
需求:
假设,用户在超市实际购买,商品总价为:600元。
键盘录入一个整数表示用户实际支付的钱。
如果付款大于等于600,表示付款成功,否则付款失败。
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入实际支付的钱");
int pay = sc.nextInt();
if (pay >= 600) {
System.out.println("付款成功");
} else {
System.out.println("付款失败");
}
}
}
影院选座
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入电影票的票号");
int ticketNumber = sc.nextInt();
int result = ticketNumber % 2;
if (ticketNumber >= 1 & ticketNumber <= 100) {
if (result == 0) {
System.out.println("坐右边");
} else {
System.out.println("坐左边");
}
} else {
System.out.println("买的是假票,报警抓走");
}
}
}
3.if
语句的第三种格式
if (关系表达式) {
语句体1;
} else if (关系表达式2) {
语句体2;
}
----------
else {
语句体 n + 1;
}
练习
小明的礼物
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
/*
根据不同的分数送给小明不同的礼物。
如果是95~100分,送自行车一辆
如果是90~94分,游乐场玩一天
如果是80~89分,送变形金刚一个。
如果是80分以下,揍小明一顿。
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明的分数");
int mark = sc.nextInt();
if (mark >= 0 && mark <= 100) {
if (mark >= 95 && mark <= 100) {
System.out.println("送小明自行车一辆");
} else if (mark >= 90 && mark <= 94) {
System.out.println("带小明去游乐场玩一天");
} else if (mark >= 80 && mark <= 89) {
System.out.println("送小明变形金刚一个");
} else {
System.out.println("揍小明一顿");
}
} else {
System.out.println("小明改了分数,喜提男女混合双打");
}
}
}
商品的价格
在实际开发中,多种情况判断时,会用到if
的第三种格式:
需求:
商场都会有vip的会员制,根据不同的会员会有不同的折扣。
假设商品总价为1000
键盘录入会员级别,并计算出实际支付的钱。
会员1级:打9折。
会员2级:打8折。
会员3级:打7折。
非会员:不打折,要打也是打骨折。
代码实现
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
int commodityPrice = 1000;
Scanner sc = new Scanner(System.in);
System.out.println("请输入会员的级别");
int memberRank = sc.nextInt();
if (memberRank >= 1 && memberRank <= 3) {
if (memberRank == 1) {
System.out.println("实际支付的钱为" + (commodityPrice * 0.9));
} else if (memberRank == 2) {
System.out.println("实际支付的钱为" + (commodityPrice * 0.8));
} else if (memberRank == 3) {
System.out.println("实际支付的钱为" + (commodityPrice * 0.7));
}
} else {
System.out.println("给顾客打骨折,实际支付的钱为" + (commodityPrice));
}
}
}
自动驾驶
public class Test8 {
public static void main(String[] args) {
//汽车无人驾驶时会涉及大量的判断
//当汽车行驶时遇到了红绿灯,就会进行判断
//如果红灯亮,就停止
//如果黄灯亮,就减速
//如果绿灯亮,就行驶
//1.定义三个变量表示灯的状态
//true 亮 false 灭
boolean isLightGreen = true;
boolean isLightYellow = false;
boolean isLightRED = false;
//2.判断
//如果红灯亮,就停止
//如果黄灯亮,就减速
//如果绿灯亮,就行驶
if (isLightGreen) {
System.out.println("GoGoGo!!!");
} else if (isLightYellow) {
System.out.println("slow!!!");
} else if (isLightRED) {
System.out.println("stop!!!");
}
}
}