Java选择结构(if、switch)
我们有时会面临人生的分岔路口,生活中也会有许多大大小小的选择。
程序也是为了提高人们生活质量的,不可能脱离实际生活,所以Java程序中也必须得实现选择结构。
当我们的代码按照书写顺序一句一句执行的时候,此时则为顺序结构。像我们书写的多条输出语句,会一句一句从上到下的按照顺序执行。
选择结构是在具备某种条件下就做什么选择,在我们生活中也频繁使用:如果我考了100分,我妈妈就会给我奖励;如果今天不下雨,我就去公园玩......没错,Java就是使用如果,即if
1.if
单if语句
语法:if(条件:布尔类型的数据,可以是表达式,也可以用逻辑运算符){ //如果条件为 true,执行语句 };
注意:if(a!=0)和if(a)是等价的
流程图:
如果我考试考了100分,那么妈妈就会给我奖励一个玩具
package com.dh.control;
public class IfDemo01 {
public static void main(String[] args) {
//if
int score = 100;
if(score == 100){
System.out.println("太棒啦!奖励一个小汽车!");
}
}
}
if...else语句
语法::if(条件表达式){ //满足条件执行的语句 } else { //不满足条件的执行语句 } ;
流程图:
如果我考试考了100分,那么妈妈就会给我奖励一个玩具,否则,就没有奖励了
package com.dh.control;
public class IfDemo01 {
public static void main(String[] args) {
//if...else
int score = 99;
if(score == 100){
System.out.println("太棒啦!奖励一个小汽车!");
}else{
System.out.println("很遗憾,下次再接再厉!");
}
}
}
if...else if...else(else可选)
语法:if(条件表达式){ //满足条件 1 的执行语句 } else if(条件表达式){ //可以有多个 else if 块 //满足条件 2 的执行语句 } else { //不满足条件的执行语句 } ;
流程图:
99分都没有奖励的话,就太让人沮丧了,和妈妈重新商量了一下,妈妈承诺,如果我考试考了100分,给我奖励一个玩具,如果我考了90分以上,就给我奖励一个冰淇淋,否则,就没有奖励了
package com.dh.control;
public class IfDemo01 {
public static void main(String[] args) {
int score = 99;
if(score == 100){
System.out.println("太棒啦!奖励一个小汽车!");
}else if(score>=90){
System.out.println("干的不错!奖励一个冰淇淋");
} else{
System.out.println("很遗憾,下次再接再厉!");
}
}
}
注意:选择结构:判断条件,符合条件则返回结果,不再进行之后的条件判断,如果不符合条件,即继续判断条件,直到所有判断条件都不满足时最后一个为结果。*
package com.dh.control;
public class IfDemo02 {
public static void main(String[] args) {
int num = 3;
if(num>1){
System.out.println("3>1");
}else if(num>2){
System.out.println("3>2");
}
}
}
结果为输出3>1,尽管3>2也成立,但是由于3>1已经满足了条件,就会直接输出结果,不会再往下做判断了
if嵌套
语法:if(条件表达式){ if(条件表达式){ //满足条件时执行的语句 } }
妈妈答应,如果期末考,数学考了100,语文90分以上,就可以去游乐场玩,否则就不能去了
package com.dh.control;
public class IfDemo03 {
public static void main(String[] args) {
int math = 100;
int chinese = 95;
if(math == 100){
if(chinese>90){
System.out.println("假期去游乐场玩!");
}
}else{
System.out.println("下次加油!");
}
}
}
//当然可以直接使用if(math==100 && chinese>90)一个判断,但是这里只是为if嵌套举例子
2.switch
选择结构除了if选择,还有一个switch选择
语法:
switch(数据:byte、short、int、char、字符串、枚举)
{
case 数据:{//执行语句}; break;
case 数据:{//执行语句}; break;
……
default:{//执行语句} break;
}
注意:
swtich只能做等值判断,即switch()里的数据与case后面的数据进行比较
break的作用:终止整个switch选择,若没有break的话会继续向下执行代码
流程图:
英语成绩呢,没有具体的分数,只有A-E五个等级,妈妈说,考A奖励一个玩具,考B奖励一个冰淇淋,考C什么都没有,考D的话就要每天多背五个单词,考E就要每天多背十个单词,其它缺考就要罚站了!
package com.dh.control;
public class SwitchDemo {
public static void main(String[] args) {
char score = 'B';
switch (score){
case 'A': {
System.out.println("奖励一个小汽车!");
}break;
case 'B': {
System.out.println("奖励一个冰淇淋!");
}break;
case 'C': {
System.out.println("再接再厉!");
}break;
case 'D': {
System.out.println("每天多背五个单词!");
}break;
case 'E': {
System.out.println("每天多背十个单词!");
}break;
default:{
System.out.println("罚站!");
}break;
}
}
}
若去掉case B、C的break,就得碰到D的break语句才会退出,所以B、C和D的语句都会被执行
package com.dh.control;
public class SwitchDemo {
public static void main(String[] args) {
char score = 'B';
switch (score){
case 'A': {
System.out.println("奖励一个小汽车!");
}break;
//去掉case B、C的break
case 'B': {
System.out.println("奖励一个冰淇淋!");
}
case 'C': {
System.out.println("再接再厉!");
}
case 'D': {
System.out.println("每天多背五个单词!");
}break;
case 'E': {
System.out.println("每天多背十个单词!");
}break;
default:{
System.out.println("罚站!");
}break;
}
}
}
if和switch都为选择结构,所以一般情况下,用if结构的,可以转换为switch,用switch结构的,也可以转换为if,大多数情况下会使用if,比较灵活。
有错误请指出~