- ⭐ 控制语句
- ⭐ 条件判断结构(选择结构)
- ⭐ switch 语句
做任何事情事情都要遵循一定的原则,毕竟不以规矩,不成方圆,例如,到图书馆去借书,就必须要有借书证,并且借书证不能过期,这两个条件缺一不可。程序设计也是如此,需亚流程控制语句实现与用户的交流,并根据用户的输入决定程序要"做什么""怎么做"等。
流程控制对于任何一门编程语言来说都是至关重要的,它提供了控制程序步骤的基本手段,如果没有流程控制语句,整个程序将按照线性的顺序来执行,不能根据用户的输入流决定执行的序列。下面我带大家一起了解Java语言中的流程控制语句。
⭐ 控制语句
控制语句:
把语句组合成能完成一定功能的小逻辑模块。
它分为三类:顺序、选择和循环。
学会控制语句,是真正跨入编程界的"门槛",是成为"程序猿"的"门票"。
⭐ “顺序结构”代表“先执行 a,再执行 b”的逻辑。比如,先找个女朋友,再给女朋友打电话。
⭐ “条件判断结构”代表“如果…,则…”的逻辑。比如,如果女朋友来电,则迅速接电话;
⭐ “循环结构”代表“如果…,则重复执行…”的逻辑。比如,如果没打通女朋友电话,则再继续打一次;(做个舔狗!!!)
很神奇的是,三种流程控制语句就能表示所有的事情!不信,你可以试试拆分你遇到的各种事情。实际上,任何软件和程序,小到一个练习,大到一个操作系统,本质上都是由“变量、选择语句、循环语句”组成。
⭐ 条件判断结构(选择结构)
条件判断结构有:
if 结构和 switch 结构。而 if 结构又可以分为 if 单分支结构、if-else 双分支结构、if-else if-else 多分支结构。
if 单分支结构
语法结构:
if(布尔表达式){
语句块
}
注意:
⭐ 如果if语句不写{},则只能作用于后面的第一条语句。
⭐ 强烈建议,任何时候都写上{},即使里面只有一句话!
【eg】if 单分支结构(掷骰子游戏)
Math 类的使用
⭐ Math.random()该方法用于产生 0 到 1 区间的 double 类型的随机数,但是不包括 1。
⭐ int i = (int) (6 * Math.random()); //产生:[0,5]之间的随机整数
public class Test {
public static void main(String[ ] args) {
//通过掷三个骰子看看今天的手气如何?
int a = (int)(6 * Math.random()) + 1;//通过 Math.random()产生随机数
int b = (int)(6 * Math.random()) + 1;
int c = (int)(6 * Math.random()) + 1;
int count = a + b + c;
//如果三个骰子之和大于 15,则手气不错
if(count > 15) {
System.out.println("今天手气不错");
}
//如果三个骰子之和在 10 到 15 之间,则手气一般
if(count >= 10 && count <= 15) { //错误写法:10<=count<=15
System.out.println("今天手气很一般");
}
//如果三个骰子之和小于 10,则手气不怎么样
if(count < 10) {
System.out.println("今天手气不怎么样");
}
System.out.println("共计" + count + "分");
}
}
if-else 双分支结构
语法结构:
if(布尔表达式){
语句块 1
}else{
语句块 2
}
当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是 else 部分。
【eg】if-else 双分支结构
public class Test {
public static void main(String[ ] args) {
//随机产生一个[0.0, 4.0)区间的半径,并根据半径求圆的面积和周长
double r = 4 * Math.random();
//Math.pow(r, 2)求半径 r 的平方
double area = 3.14* r*r;
double circle = 2 * Math.PI * r;
System.out.println("半径为: " + r);
System.out.println("面积为: " + area);
System.out.println("周长为: " + circle);
//如果面积>=周长,则输出"面积大于等于周长",否则,输出周长大于面积
if(area >= circle) {
System.out.println("面积大于等于周长");
} else {
System.out.println("周长大于面积");
}
}
}
条件运算符有时候可用于代替 if-else。
【eg】if-else 与条件运算符的比较:使用 if-else
int a = 3;
int b = 4;
int c2 = 0;
if(a<b){
c2 = b;
}else{
c2 = a;
}
System.out.println(c2);
【eg】if-else 与条件运算符的比较:使用条件运算符
// 三元运算
int a = 3;
int b = 4;
int c = a<b?b:a; //返回 a 和 b 的最大值
System.out.println(c);
if-else if-else 多分支结构
语法结构:
if(布尔表达式 1) {
语句块 1;
} else if(布尔表达式 2) {
语句块 2;
}……
else if(布尔表达式 n){
语句块 n;
} else {
语句块 n+1;
}
当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式 2 为真时,执行语句块 2;否则,继续判断布尔表达式 3······;如果 1~n 个布尔表达式均判定为假时,则执行语句块 n+1,也就是 else 部分。
【eg】if-else if-else 多分支结构
public class Test {
public static void main(String[ ] args) {
int age = (int) (100 * Math.random());
System.out.print("年龄是" + age + ", 属于");
//15 岁以下儿童;15-24 青年;25-44 中年;45-64 中老年;65-84 老年;85 以上老寿星
if (age < 15) {
System.out.println("儿童, 喜欢玩!");
} else if (age < 25) {
System.out.println("青年, 要学习!");
} else if (age < 45) {
System.out.println("中年, 要工作!");
} else if (age < 65) {
System.out.println("中老年, 要补钙!");
} else if (age < 85) {
System.out.println("老年, 多运动!");
} else {
System.out.println("老寿星, 古来稀!");
}
}
}
⭐ switch 语句
switch 多分支结构(多值情况)
语法结构:
switch (表达式) {
case 值 1:
语句块 1;
break;
case 值 2:
语句块 2;
break;
… … … … …
default:默认语句块;
}
⭐ switch 会根据表达式的值从相匹配的 case 标签处开始执行,一直执行到 break 处或者是 switch 的末尾。如果表达式的值与任一 case 值不匹配,则进入 default 语句。
⭐ switch 中表达式的值,是 int(byte、short、char、long 不行)、枚举,字符串。
【eg】switch 结构
public class TestSwitch {
public static void main(String[] args){
int month = 2; //1 表示 1 月,2 表示 2 月,....
if(month==1||month==2||month==3){
System.out.println("春季");
}else if(month==4||month==5||month==6){
System.out.println("夏季");
}else if(month==7||month==8||month==9){
System.out.println("秋季");
}else{
System.out.println("冬季");
}
System.out.println("========使用 switch 改造上面的代码,switch 特别适合多值判断=============");
switch (month){
case 1:
case 2:
case 3:
System.out.println("春季");
break;
case 4:
case 5:
case 6:
System.out.println("夏季");
break;
case 7:
case 8:
case 9:
System.out.println("秋季");
break;
default:
System.out.println("冬季");
}
}
}
switch 接收字符串
【eg】JDK7.0 之后可以直接使用字符串。
String str = "audi";
switch (str){
case "audi":
System.out.println("我买了个奥迪车");
break;
case "benz":
System.out.println("我买了个奔驰车");
break;
default:
System.out.println("比亚迪,挺好!");
}