条件判断if...else...
(1)单分支结构 (2)双分支结构 (3)多分支结构
语句结构:
if(条件表达式1){
当条件表达式1成立时,要执行的语句块1;
}else if(条件表达式2){
当条件表达式2成立时,要执行的语句块2;
}else if(条件表达式3){
当条件表达式3成立时,要执行的语句块3;
}....
else{//可选,可写可不写
当所有的条件表达式都不成立时,要执行的语句块n+1;
}
执行特点:
(1)按顺序从上往下判断,如果有一个条件满足了,就执行对应的语句块, 剩下的条件就不看了。如果所有条件都不满足,就执行最后的else中的语句块。
(2)所有if()中的条件表达式都必须是boolean值或者是结果是boolean类型的表达式
(3)所有的if后面{}和else后面{}中如果只有一个语句,可以省略{}
(4)多分支结构中,多个if条件的顺序是否可以调整,要看这几个条件的范围是
A:互斥关系,可以调整
B:包含关系,不可以调整,范围小的在上面,范围大的在下面
多分支结构中,多个if条件的顺序是否可以调整,要看这几个条件的范围是
(1)互斥关系,可以调整
(2)包含关系,不可以调整,范围小的在上面,范围大的在下面
选择结构:switch...case
语法结构:
switch(表达式){
case 常量值1:
语句块1;
【break;】
case 常量值2:
语句块2;
case 常量值3:
语句块3;
...
default://该部分是可选的,可以写也可以不写
语句块n+1;
break;
}
说明: (1)break不是必选的
(2)default也不是必选的,并且位置不一定在最后,只是习惯上在最后。 无论它在哪里,都是所有case不满足时,才从default进入。
(3)case后面一定是常量值
(4)case后面的常量不能重复
(5)switch(表达式)中表达式的结果类型只能是 byte,short,int,char四种基本数据类型和 String与枚举两种引用数据类型。
执行过程:
(1)入口
A:当switch(表达式)中表达式的值与某个case后面的常量值一样了,就从这个case进入
B:默认入口,当所有的case都不满足,从default进入
(2)出口
A:当遇到switch结构的结束},自然就结束了
B:中断出口,break 或 return等
(3)贯穿
从入口到出口之间,会贯穿其他的case,一直往下执行,直到出口为止
package com.dyy.exam;
import java.util.Scanner;
/*1990年开始三天打鱼两天筛网,那么某年某月某日是在打鱼还是晒网*/
public class Exam9 {
public static void main(String[] args) {
int[] Pyear = new int[12];
for (int i = 0; i < 12; i++) {
switch (i + 1) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
Pyear[i] = 31;
break;
case 2:
Pyear[i] = 28;
break;
case 4:
case 6:
case 11:
Pyear[i] = 30;
break;
}
}
int[] Ryear = Pyear;
Ryear[1] = 29;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
System.out.println("请输入日期:");
int day = scanner.nextInt();
int total = 0;
boolean flag = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
for (int i = 1990; i < year; i++) {
if (flag) {
total += 366;
} else {
total += 365;
}
}
for (int i = 0; i < month - 1; i++) {
if (flag) {
total += Ryear[i];
} else {
total += Pyear[i];
}
}
int res = total % 5;
if (res == 1 || res == 2 || res == 3) {
System.out.print(year + "年" + month + "月" + day + "日"
+ "这天打鱼,距第一天过去了"+total+"天");
} else {
System.out.print(year + "年" + month + "月" + day + "日"
+ "这天晒网,距第一天过去了"+total+"天");package com.dyy.exam;