07_Java筑基之选择语句
一. 程序基本结构
1. 顺序结构;
2. 选择结构;
3. 循环结构.
1. 顺序结构
程序从上到下,一行一行的执行代码,没有判断和中转.

有选择性的执行或者跳过指定代码.

2.1 Java的选择结构使用选择语句来实现
1. if语句
2. switch语句
3. 循环结构
重复执行一段代码,直到条件不成立.

if(条件){...}
if(条件){...}else{...}
if(条件){...}else if(条件){...}else{...}
if(条件){ if(条件){...} } else {...}
2. 简单if语句
if ( 条件 ) {
//代码块
}

java成绩如果大于60,奖励一颗糖.
public static void main(String[] args){
//简单的if语句:
//成绩如果大于60 给奖励
int score = 10;
if(score>60){
System.out.println("给颗糖");
}
}
示例2:
Java成绩大于98分,而且Html成绩大于80分,老师奖励他; 或者Java成绩等于100分,Html成绩大于70分,老师也可以奖励他.
public static void main(String[] args){
if((score1 >98 && score2 > 80 ) || ( score1 == 100 && score2 > 70 )){
//奖励
}
}
3. if-else语句
if ( 条件 ) {
//代码块1
}else{
//代码块2
}

如果是男生就永远18岁,否则永远16岁.
public static void main(String[] args){
// 如果是男生 就永远18岁
// 如果是 女生 永远16岁
char c = '女';
if(c == '男'){// boolean 结果是true,执行if中代码,否则执行else中的代码
System.out.println("永远18岁");
}else{
System.out.println("永远16岁");
}
}
上机练习1:
买体育彩票,如果体彩中了500万,我买车、买房、欧洲旅游;如果没中,继续买.
public static void main(String[] args){
//1.创建input对象
Scanner input=new Scanner(System.in);
//2.提示
System.out.println("中500万吗?Y/N"); String answer=input.next();
//3.判断
if(answer.equals("y")){ //字符串的判断使用equals方法
System.out.println("买房、买车、欧洲旅游...");
}else{
System.out.println("继续买....");
}
}
注意:
字符串的判断使用equals方法.
上机练习2:输入四位数字的会员号的百位数字等于产生的随机数字即为幸运会员,提示恭喜您中奖了,否则没中奖.
提示:
int random=(int)(Math.random()*10); //随机数
注意:
Math.random();产生0-1之间的一个数字,包括0,但不包括1.
public static void main(String[] args){
//1.创建Input对象
Scanner input=new Scanner(System.in);
//2.提示
System.out.println("请输入四位的会员号:");
int member=input.nextInt();
//3.生成百位数字
int bai=member/100%10;
int ran=(int)(Math.random()*10); //Math.random();产生0-1之间的一个数字,含0不含1
if(bai==ran){
System.out.println("中奖了....旅游去吧"); }else{
System.out.println("好好干活..."); }
}
4. 多重if语句
if ( 条件1) {
//代码块1
}else if (条件2) {
//代码块2
} ...
else {
//代码块3
}
示例1:
如果成绩大于90并且是男生就送个女朋友,成绩大于90并且是女生送个男朋友,否则...
public static void main(String[] args){
char c = '女';
int score = 10;
if(score>90 && c=='男'){
System.out.println("给送个女朋友");
}else if(score>90 && c=='女'){
System.out.println("给送个男朋友");
}else{
System.out.println("啥都没有,自己买");
}
}
上机练习1:
我想买车,买什么车决定于我在银行有多少存款. 如果我的存款超过500万,我就买保时捷; 否则,如果我的存款超过100万,我就买宝马; 否则,如果我的存款超过50万,我就买帕萨特; 否则,如果我的存款超过10万,我就买qq; 否则,如果我的存款10万以下,我买捷安特.
5. 嵌套if语句if(条件1) {
if(条件2) {
代码块1
}else {
代码块2
}
}else{
代码块3
}
示例:
如果成绩大于90,如果是男生送个宝马,如果是女生送个LV.
public static void main(String[] args){
// 如果成绩大于90 如果是男生 如果是女生
int score = 10;
if(score>90){
if(c=='男'){
System.out.println("给送个宝马");
}else{
System.out.println("给送个LV");
}
}
6. 特殊的if语句(不推荐使用)
// 特殊形式
// 必须要求 if 或者 else 语句中只能有一条语句
if(score>60)
System.out.println("有奖励");
else
System.out.println("啥都没有");
上机练习1:
输入四个季节: 如果春天,输出“春暖花开”; 如果是夏天,输出“夏日炎炎”; 如果是秋天,则输出"秋高气爽"; 如果是冬天,则输出"安静祥和".
//1.导包
import java.util.Scanner;
class Demo8 {
public static void main(String[] args){
//== 判断基本数据类型内容是否相等;
//引用数据类型 == 判断内存地址;
//判断内容 String 类型,判断内容 equals.
Scanner sc = new Scanner(System.in);
String str = sc.next();
// boolean flag= str.equals("春天");
if(str.equals("春天")){
System.out.println("春暖花开");
}else if(str.equals("夏天")){
System.out.println("夏日炎炎");
}else if(str.equals("秋天")){
System.out.println("秋高气爽");
}else if(str.equals("冬天")){
System.out.println("安静祥和");
}
}
}
三. switch语句
switch只适合做等值判断.
语法结构:
switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
case 常量3:
代码块3;
break;
...
default:
默认代码块;
break;
}
1. switch语法规则
1. 表达式expr的值必须是下述几种类型之一:
byte、short、int、char、enum(枚举);
java7之后可以是String;
2. case子句中的值const 必须是常量值(或final的变量),case中的值不能是一个范围;
3. 所有case子句中的值应是不同的,否则会编译出错;
4. default子句是可选的(不是必须的);
5. break语句用来在执行完一个case分支后使程序跳出switch语句块;否则会继续执行下去.
2. 语法格式
switch(表达式expr){
case const1:
statement1;
break;
case const2:
statement2;
break;
......
case constN:
statementN;
break;
default:
statement_dafault;
break;
}
3. 执行顺序
1. 如果表达式的值和 case 相等,就执行case中的代码;
如果所有的 case 都不满足需求的时候,执行default 中的内容;
2. break 帮助跳出switch 语句, 如果执行过程中没有遇到break,
则继续向下执行直到遇到break为止.
4. 练习
练习一: 简单实现switch语句
int count = 1;
switch(count){
case 1:
System.out.println("奖励iphonexs");
break;
case 2:
System.out.println("奖励xiaomi");
break;
case 3:
System.out.println("奖励200元");
break;
default:
System.out.println("给个彩票");
break;
}
练习二: 判断 春夏秋冬
Scanner sc = new Scanner(System.in);
String str = sc.next();
switch(str){
case "春天":
System.out.println("春暖花开");
break;
case "夏天":
System.out.println("闷热");
break;
case "秋天":
System.out.println("秋高气爽");
break;
case "冬天":
System.out.println("滴水成冰");
break;
default:
System.out.println("火星的");
break;
}
练习三: 利用switch实现一个计算器操作
import java.util.Scanner;
public class Demo13{
public static void main(String[] args{
Scanner input=new Scanner(System.in);
System.out.println("请输入第一个操作数");
int num1=input.nextInt();
System.out.println("请输入运算符");
String ope=input.next();
System.out.println("请输入第二个操作数");
int num2=input.nextInt();
int result=0;
switch(ope){
case "+":
result=num1+num2;
break;
case "-":
result=num1-num2;
break;
case "*":
result=num1*num2;
break;
case "/":
if(num2!=0){
result=num1/num2;
}else{
System.out.println("除数不能为0"); }
break;
case "%":
result=num1%num2;
break;
default:
System.out.println("输入有误");
break;
}
System.out.println("运算结果是:"+result);
}
}
5. 特殊用法: case穿透
产生case穿透的原因: 由于某个case语句中缺少或者漏写break语句所导致的结果.
// 需求: 打印输出指定的月份的天数
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("31天");
break;
case 2:
System.out.println("28天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("30天");
break;
}
System.out.println("Hello World!");
四. 总结
1. 程序三种基本结构:
顺序结构
选择结构
循环结构
2. if 语句的使用形式:
if(条件){....}
if(条件){...} else{...}
if(条件){...} else if(条件){...}else if(条件){...} else{...}
if(条件){ ... if(条件){...} } else{...}
3. switch (等值判断)
switch(变量表达式){
case 常量1: ....
break;
case 常量2:
....
break;
}
4. switch表达式中的变量类型:byte short int char String 枚举;
case 常量不能重复;
default 可以省略;
break 不要省略,如果省略会出现case穿透;