if嵌套:用于选择结构中有多个分支的情况,而基本的if语句只能解决两个分支的情况。
多分支的另一种结构:else if的语句结构:
if(){
}else if(){
}else if(){
}else if(){
}
else if形式的特点:这种写法公家简洁,else if 语句的条件是并列的,而不是像if语句的嵌套那样是层次关系。
示例:题目:判断整数的符号。
public class Demo {
public static void main(String[] args) {
System.out.println("请输入一个数");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
if (a > 0){
System.out.printf("%d的符号是:+",a);
}else if (a < 0){
System.out.printf("%d的符号是:-",a);
}else {
System.out.printf("%d",a);
}
}
}
结果:
switch语句
switch语句语法结构:
switch(常量表达式){
case 常量1:所要执行的语句1;break;
case 常量2:所要执行的语句2;break;
case 常量3:所要执行的语句3;break;
}
switch语句的执行过程:从case后边的常量值等于switch后边的常量表达式的值的地方进入,进入后由上到下逐一执行所有的case后的语句,如有前的case不会被执行。
break:从case的入口进入后,进行完相应的语句,直接跳出switch结构。相当于风扇开关(switch)短路。
switch中可以不加break;不加break的switch才是switch的真正逻辑。
示例:
public class Demo {
public static void main(String[] args) {
System.out.println("请输入你的分数(0-100):");
Scanner sc = new Scanner(System.in);
int sum = sc.nextInt();
String a;
switch (sum/10){
case 10:
a = "等级A";
break;//如果成立就结束,后面的不执行
case 9:
a = "等级B";
break;
case 8:
a = "等级C";
break;
case 7:
a = "等级D";
break;
case 6:
a = "等级E";
break;
default://如果所有的情况都不匹配,就执行
a = "不及格";
break;
}
System.out.printf("你的分数%d,等级是%s",sum,a);
}
}
结果:
switch案例:
题目:计算今天是今年的第几天?
/**
* 思路:
* 输入年月日
* 判断月份,而且从大到小排,如果是2月份,那么判断它是平年还是闰年
* 计算天数
*/
public class Demo {
public static void main(String[] args) {
System.out.println("请输入今天的年份:");
Scanner sc = new Scanner(System.in);
int years = sc.nextInt();
System.out.println("请输入今天的月份:");
int months = sc.nextInt();
System.out.println("请输入今天的日期:");
int days = sc.nextInt();
int sum = days;
switch (months-1){
case 11:
sum +=30;
case 10:
sum +=31;
case 9:
sum +=30;
case 8:
sum +=31;
case 7:
sum +=31;
case 6:
sum +=30;
case 5:
sum +=31;
case 4:
sum +=30;
case 3:
sum +=31;
case 2:
if (years%4==0&&years%100!=0||years%400==0){
sum += 29;
}else {
sum +=28;
}
case 1:
sum +=31;
}
System.out.printf("今天是%d年的第%d天",years,sum);
}
}
结果: