本章内容
程序结构
分支结构:
单if分支
if-else双重分支
else if多重分支
switch多重分支
3. 具体内容
3.1 程序结构
所谓的程序结构指的就是代码的执行的过程。按照怎样的要求进行执行。
程序——模拟现实的。
顺序结构:
典型一行执行完毕之后执行下一行,每一行都必须执行。
所有语言都有,默认都是顺序结构。
分支结构:
处理选择。
循环结构:
处理循环一直操作一模一样的东西的代码。抄写单词自己输出n遍,如果引入循环结果可以只写一遍,但是执行n遍。
3.2 分支结构
如果(气温<5){
// 不去上课
}else{
// 去上课
}
分支结构主要控制代码是否执行。
案例:输入你的java成绩,如果在90以上,输出 优秀! 在 70--90之间输出,良好! 60-70 之间输出 一般!60以下输出 不及格!
3.2.1 if分支
单if分支(5分钟)
如果碰到条件的时候,如果成立我会去执行一个代码块(多个语句的集合),如果不成立,而是结束分支结构,继续后续的代码。如果{}中的语句块只有一句话,{可以省略,但是不建议。
Java
语法:
if(条件 为真){
条件成立时执行的代码块;
}
如果条件成立,执行对应的代码块,如果不成立,if终止直接执行if后的代码。
Java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入金额");
int money = scanner.nextInt();
// 条件为真 执行后面的代码快里面的语句
if( money > 100 ){
System.out.println("你是一个富豪");
}
System.out.println("条件执行完毕");
}
if-else双重分支(5分钟)
如果条件成立执行一个对应的代码块,如果不成立执行另外一个代码块。
Java
if(条件表达式){
成立的代码块
}else{
条件不成立执行的代码块
}
// 后续代码
Java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入金额");
int money = scanner.nextInt();
// 条件为真 执行后面的代码快里面的语句
if( money > 100 ){
System.out.println("你是一个富豪");
}else{
// money<=100
// 代表 if里面的条件不成立 或者 跟if里面的条件互斥
System.out.println("啥也不是");
}
System.out.println("条件执行完毕");
}
else if多重分支(8)
如果条件1成立执行对应代码块,如果不成立,进行条件2判断,如果条件2成立执行对应代码块不成立继续判断条件3依次类推,如果都不成立,执行else,如果没有else ,if分支结束执行后续代码。
Java
if(条件1){
条件成立的代码块
}else if(条件2——隐含条件是1不成立){
条件2成立的代码块
}else if(条件3-隐含2不成立){
条件3成立的代码块
}.....
else{
}
// if 只能有一个 else 只能有一个 else if 可以有多个
注意:每一个条件都有一个隐式条件,所以不能乱序。(不是绝对不能,如果乱序可以通过条件的显示声明给规避了)
Java
public static void main(String[] args) {
int score=99;
/**
* 声明一个变量接收小明额成绩:如果成绩及格可以休息一天,如果不及格就罚跑圈。
* 100休息一天
* >90 休息半天
* >80 睡个懒觉
* >=60 正常学习
* 不及格:跑圈
*/
if(score==100){
System.out.println("休息一天");
}else if(score>=90){
System.out.println("休息半天");
}else if(score>=80){
System.out.println("睡个懒觉");
}else if(score>=60){
System.out.println("正常学习");
}else{
System.out.println("跑圈!!!!!!!!");
}
}
3.2.2 switch多重分支
switch也是做多重分支,但是只能做等值判断。
在jdk5之前 只能是基本数据类型的等值判断 但是 jdk5之后 可以用于字符串的等值判断
如果处理等值判断,switch语法上比else if更简洁,而且效率更快。
Java
/*
* 返回的是一个常量值,这个不是一个truefalse而是具体的值,这个值可以是
数字(整数),字符、可以是字符串,但是不能是boolean也不能是其他的引用数据类型
*
* 首选表达式结果和值1判断,如果成立,执行后续的语句块,
* 直到碰到break,如果没有break,后续所有代码都将执行,直到switch结束。
* 如果不成立,会判断case 2的值,成立,执行语句块2,直到碰到break....
* 。。。。。。
* 如果都不成立,执行default。
* */
switch(表达式){
case 值1:语句块1;[break;] 相当于:if(表达式==值1){语句块}
case 值2:语句块2;[break;]相当于:else if(表达式==值2){语句块}
case 值3:语句块3;[break;]相当于:else if(表达式==值3){语句块}
case 值4:语句块4;[break;]相当于:else if(表达式==值4){语句块}
default:默认语句块; 相当于:else{}
}
Java
int score=90;
switch (score/10){
case 10:
System.out.println("休息一天");break;
case 9:
System.out.println("休息半天");break;
case 8:
System.out.println("睡个懒觉");break;
case 7:
//System.out.println("正常学习");break;
case 6:
System.out.println("正常学习");break;
default:
System.out.println("跑圈!!!");break;
}
3.2.3 三目运算符:
Java
条件? 成立 : 不成立
public static void main(String[] args) {
int score = 100;
// if(score > 100){
// score +=100; //==> score = score+100;
// }else{
// // score - 50
// score-=50;// =>score = score-50;
// }
// 条件?成立:不成立
// 条件? 成立 : 不成立 三目运算符 三元表达式 ?表达式 :表达式
score = score>100 ? score+100 : score-50; // 代码简洁
System.out.println("score的值:"+score);
}
4.总结
分支结构:
单分支
if(条件表达式){
// 条件成立的时候 执行的一段代码
}
双分支
if(条件表达式){
//
}else{
}
多重分支
一个if 一个else 多个else if
if(条件1){
}else if(条件2){
}else if(条件3){
}else{}// else 可以生省略不写
特殊的多重分支、
switch (变量){
case 值:
//代码
break;
case ........
default:
}
三目运算符
条件表达式?成立执行内容:不成立的时候执行的内容