流程控制三种结构:
-
顺序结构:程序从上往下执行。
-
分支结构:if; if-else; if , else if, else if , else;
switch-case
说明:一般能用switch-case的地方,都能用if-else; 反之,则不成立;如果switch-case和if-else都能使用,并且案例不多的情况下优先使用switch-case , 因为switch-case的执行效率更高。
-
循环结构: 在某些条件满足的情况下,反复执行特定的语句。 * for; while; do-while*
int temp2=30;
if(temp2<60){
System.out.println("温度合适,可以启动发动机");
}
System.out.println("检查结束");
输出结果:温度合适,可以启动发动机
检查结束
int temp=100;
if(temp<=80){
System.out.println("温度适宜,可以启动机器");}
else{
System.out.println("温度过高,不适宜启动机器");
}
System.out.println("结束");
输出结果:温度过高,不适宜启动机器
结束
int temp=40;
if (temp<=10){
System.out.println("温度过低");}
else if(10<temp&&temp<=15){
System.out.println("温度偏低");}
else if(temp>15&&temp<=30){
System.out.println("温度正常");}
else if(temp>30&&temp<=50){
System.out.println("温度过高,请立即降温");}
else{
System.out.println("有爆炸危险!!!");}
输出结果:温度过高,请立即降温
编写程序:声明2个double变量并赋值。判断第一个数大于10.0且第二个数小于20.0,打印两数之和。否则打印两数之积
double num4=11,num5=15;
double num0=(num4>10&&num5<20)?(num4+num5):(num4*num5);
System.out.println(num0);
用两种方法计算出三个数中的最大值:
double d1 = 5, d2 = 6, d3 = 9, dmax;
if (d1 > d2) {
dmax = d1;
} else {
dmax = d2;
}
if (dmax > d3) {
System.out.println("最大值=" + dmax);
} else {
System.out.println("最大值=" + d3);
}
=======================================================================
double num1=5,num2=10,num3=20;
double max=(num1>num2)?num1:num2;
double max1=(max>num3)?max:num3;
System.out.println("最大值="+max1);
交换两个变量的值第一种方法:
int num6=100,num7=200,num8;
num8=num6;
num6=num7;
num7=num8;
System.out.println("num6="+num6);
System.out.println("num7="+num7);
输出结果:num6=200
num7=100
======================================================================
交换两个变量的值第二种方法:
int num9=500,num10=1000;
num9=num9+num10;
num10=num9-num10;
num9=num9-num10;
System.out.println("num9="+num9);
System.out.println("num10="+num10);
输出结果:num9=1000
num10=500
======================================================================
交换两个变量的值第三种方法:
int num11=8,num12=20,num13;
num13=num11^num12;
num11=num13^num11;
num12=num13^num11;
System.out.println("num11="+num11);
System.out.println("num12="+num12);
输出结果:num11=20
num12=8
if-else的就近原则:
当没有括号的时候,else 优先选择最近的if;if选择最近的一条执行语句,如果跟有多条执行语句,在没有 {} 的前提下,if只能罩住最近的一行
switch-case 结构说明:
注意:switch中的表达式只能是如下六种类型之一:
byte, short, int, char, String, 枚举类型。
我们来看一个季节案例:
注意:switch和case后面的表达式必须是常量,禁止使用boolean。break可以选择加或者不加;default相当于if-else中的else.
题目:把随机输入的小写字母转换成大写字母
import java.util.Scanner;
public class switch01 {
public static void main(String[] args) {
System.out.println("请输入字母:");
Scanner scan = new Scanner(System.in);
String lett=scan.next();
switch (lett) {
case("a"):
System.out.println("A");
break;
case ("b"):
System.out.println("B");
break;
case ("c"):
System.out.println("C");
break;
case ("d"):
System.out.println("D");
break;
case("e"):
System.out.println("E");
default:
System.out.println("Other");
}
}
}
注意:如果switch-case中,case的执行语句相同,则可以考虑case合并,如下图:
题目:从键盘上随意输入19年的月份和天数,算出它是一年中的第多少天?
方法一(冗余):
import java.util.Scanner;
public class switch02 {
/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月16日上午9:01:04
*/
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入月份:");
int month= scan.nextInt();
System.out.println("请输入日子:");
int days=scan.nextInt();
switch (month){
case(1):
System.out.println(days);
break;
case(2):
System.out.println((31+days));
break;
case(3):
System.out.println((31+28+days));
break;
case(4):
System.out.println((31+28+31+days));
break;
case(5):
System.out.println((31+28+31+30+days));
break;
case(6):
System.out.println((31+28+31+30+31+days));
break;
case(7):
System.out.println((31+28+31+30+31+30+days));
break;
case(8):
System.out.println((31+28+31+30+31+30+31+days));
break;
case(9):
System.out.println((31+28+31+30+31+30+31+31+days));
break;
case(10):
System.out.println((31+28+31+30+31+30+31+31+30+days));
break;
case(11):
System.out.println((31+28+31+30+31+30+31+31+30+31+days));
break;
case(12):
System.out.println((31+28+31+30+31+30+31+31+30+31+30+days));
break;
default:
}
}
}
方法二:
import java.util.Scanner;
public class switch03 {
/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月16日上午9:01:04
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入月份:");
int month=scan.nextInt();
System.out.println("请输入日子:");
int days=scan.nextInt();
int alldays=0;
switch(month){
case(12):
alldays+=30;
case(11):
alldays+=31;
case(10):
alldays+=30;
case(9):
alldays+=31;
case(8):
alldays+=31;
case(7):
alldays+=30;
case(6):
alldays+=31;
case(5):
alldays+=30;
case(4):
alldays+=31;
case(3):
alldays+=28;
case(2):
alldays+=31;
case(1):
alldays+=days;
System.out.println(alldays);
}
}
}
题目:从键盘上随意输入年份,月份和天数,算出它是那一年中的第多少天?(注意:需要先判断是不是闰年:可以被4整除,但是不能被一百整除,可以被400整除)
import java.util.Scanner;
public class switch04 {
/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月16日上午9:01:04
*/
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入年份:");
int year=scan.nextInt();
System.out.println("请输入月份:");
int month=scan.nextInt();
System.out.println("请输入日期:");
int day=scan.nextInt();
int alldays=0;
switch(month){
case(12):
alldays+=30;
case(11):
alldays+=31;
case(10):
alldays+=30;
case(9):
alldays+=31;
case(8):
alldays+=31;
case(7):
alldays+=30;
case(6):
alldays+=31;
case(5):
alldays+=30;
case(4):
alldays+=31;
case(3):
if(year%4==0&&year%100!=0||year%400==0){
alldays+=29; }
else {alldays+=28;}
case(2):
alldays+=31;
case(1):
alldays+=day;
System.out.println(year+"年的第"+month+"月"+day+"天为该年的第"+alldays+"天");
}
}
}