一、Java执行语句
分类:
- 顺序语句:方法中的代码从上往下执行
- 分支语句:根据某个条件执行某个功能
- if分支
- switch分支
- 循环语句:某个条件成立就重复执行某个功能
- for循环
- while循环
- do-while循环
- 特殊流程的控制语句
- break
- continue
- return
- lable
二、Java-if分支
1. 简单的if分支
import java.util.Scanner;
public class Test{
/**
语法结构:
if(表达式){
...代码块...
}
理解:
表达式的结果必须是boolean类型
true - 执行代码块
false- 跳过if分支
做实验:
if(false){
System.out.println("...代码块...");
}
System.out.println("if分支以外的代码");
小结:
if(表达式){}依据表达式的结果可进入,也可以不进入
*/
public static void main(String[] args){
//eg:案例:如果张三的Java考试成绩大于98分,张三就能获得一辆法拉利作为奖励
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double score = scan.nextDouble();
if(score > 98){
System.out.println("奖励张三法拉利玩具赛车一辆");
}
}
}
2. 复杂的if分支
import java.util.Scanner;
public class Test{
/**
知识点:复杂的if分支
案例一: 人类的健康指数正常值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重:");
double weight = scan.nextDouble();
System.out.println("请输入身高:");
double height = scan.nextDouble();
double health = weight/(height*height);
if((health>20)&&(health<25)){
System.out.println("健康指数达标"");
}
*/
public static void main(String[] args){
/**
案例二:张三Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
*/
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();
System.out.println("请输入音乐成绩:");
double musicScore = scan.nextDouble();
if((javaScore > 98 && musicScore > 80)||(javaScore == 100 && musicScore > 70)){
System.out.println("奖励张三法拉利玩具赛车一辆");
}
}
/**
小结:
1.if可以判断区间
2.if可以判断复杂条件
*/
}
3. if…else…语句
语法结构:
if(表达式){
...代码块...
}else{
...else代码块...
}
/**
理解:
表达式的结构必须是Boolean类型
表达式为true——执行代码块
表达式为false——执行else代码块
eg:如果张三Java考试成绩大于98分,老师就奖励他一个劳斯莱斯,否则老师就罚他进行编码
import java.util.Scanner;
public class Test04{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double score = scan.nextDouble();
if(score > 98){
System.out.println("奖励张三劳斯莱斯玩具赛车一辆");
}else{
System.out.println("老师给张三通宵补课");
}
}
}
4. 多重if
eg:
通过键盘录入学生成绩,如果在90-100之间,则打印“A”,否则如果在80-90之间,则打印“B”,否则如果在70-80之间,则打印“C”,否则如果在60-70之间,则打印“D”,否则如果在0-60之间,则打印“E”,否则打印“成绩异常”
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
double score = scan.nextDouble();
if(score >= 90 && score <= 100){
System.out.println("A");
}else if(score >= 80 && score < 90){
System.out.println("B");
}else if(score >= 70 && score < 80){
System.out.println("C");
}else if(score >= 60 && score < 70){
System.out.println("D");
}else if(score >= 0 && score < 60){
System.out.println("E");
}else{
System.out.println("成绩异常");
}
}
}
5. 嵌套if
eg:
学校举行运动会,百米赛跑跑入12秒内的学生有资格进决赛,根据性别分别进入男子组和女子组。
import java.util.Scanner; public class Test06{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入成绩:"); double score = scan.nextDouble(); if(score >= 0 && score <= 12){ System.out.println("请输入性别:"); String sex = scan.next(); if(sex.equals("男")){//equals比较两个字符串内容是否相同 System.out.println("恭喜进入到男子组决赛"); }else if(sex.equals("女")){ System.out.println("恭喜进入到女子组决赛"); }else{ System.out.println("性别异常"); } }else if(score > 12){ System.out.println("感想参与"); }else{//负数的情况 System.out.println("成绩异常"); } } }
三、Java-switch分支
1.switch分支
语法结构:
switch(表达式){ case 值1: ...代码块1... break; case 值2: ...代码块2... break; case 值n: ...代码块n... break; default: ...default代码块... break; }
理解:表达式的结果分别给值1、值2、值n比较,哪个相同就执行对应的代码块,如果都不相同就执行default代码块,default代码根据需求可写可不写
eg:
张三参加学校100比赛,如果获得第一名,将奖励现金500元;如果获得第二名,将奖励U盘一个;如果获得第三名,则奖励一个笔记本;
import java.util.Scanner; public class Test07{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入比赛名次:"); String str = scan.next(); switch(str){ case "第一名": System.out.println("奖励现金500元"); break; case "第二名": System.out.println("奖励U盘一个"); break; case "第三名": System.out.println("奖励移动硬盘一个"); break; default: System.out.println("奖励一个笔记本"); break; } } }
2.switch分支的深入
switch(表达式)–表达式值的类型可以为:
byte、short、int、char、枚举(JDK1.5)、字符串(JDK1.7)
switch底层判断原理:
switch中判断的数据类型只有int
byte – 自动向上转型成int
short – 自动向上转型成int
char – 获取字符的Unicode码
枚举 – 获取对象在枚举中的序号
字符串-- 获取字符串的hash码
eg: 输入年和月,输出当月的天数
import java.util.Scanner; public class Test08{ /** 分析: 1、3、5、7、8、10、12月 -- 31天 4、6、9、11月 -- 30天 2月 -- 闰年29天、平年28天 闰年条件:年份被4整除且不能被100整除 或者 年份被400整除 */ 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(); int day = 0; switch(month){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: day = 31; break; case 4:case 6:case 9:case 11: day = 30; break; case 2: if(year%4==0&&year%100!=0 || year%400==0){//闰年 day = 29; }else{//平年 day = 28; } break; } System.out.println(year + "年" + month + "月当月的天数为:" + day + "天"); } }