-
分支控制if - -else
-
单分支
- 基本语法:if(条件表达式){执行代码块};
- 说明:当条件表达式为true时,就会执行{ }里面的代码,若为flase,就不执行,
-
双分支.
-
if(条件表达式1){执行代码块1; } else if(条件表达式2){执行代码块2; } else if(3){3;} else{ n;}
-
-
嵌套分支
if(){ if(){ //if-else... }else{ //if-else } }
参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。 输入成绩和性别,进行判断和输出信息。 import java.util.Scanner; System.out.println("请输入初赛成绩:"); double score = new Scanner(System.in).nextDouble(); if (score > 8.0) { System.out.println("请输入性别"); char gender = new Scanner(System.in).next().charAt(0); if (gender == '男') { System.out.println("进入男子组"); } else if (gender == '女') { System.out.println("进入女子组"); } else { System.out.println("性别有误,不能参加决赛"); } } else { System.out.println("很遗憾,未进入决赛"); }
import java.util.Scanner; System.out.println("请输入月份:"); int a = new Scanner(System.in).nextInt(); System.out.println("请输入年龄:"); int age = new Scanner(System.in).nextInt(); if (a <= 10 && a >= 4) { if (age >= 18 && age <= 60) { System.out.println("票价为60元"); } else if (age <= 18) { System.out.println("票价为30元"); } else if (age >= 60) { System.out.println("票价为20元"); } } else { if (age >= 18 && age <= 60) { System.out.println("票价为40元"); } else { System.out.println("票价为20元"); }
-
-
switch分支结构
-
基本语法
switch(表达式){ //swich关键字表示swich分支,表达式对应一个值 case 常量1: //当表达式的值等于常量1,就执行语句块1 语句块1; break; //退出swich case 常量2; //如果和case常量1匹配,就执行语句块1,如果没有匹配,就继续匹配case2 语句块2; break; ... case 常量n; 语句块n; break; default:default语句块2; //如果一个都没有匹配上,就执行语句块default break; }
-
细节
-
表达式的数据类型应与case后的常量类型一致,或者是可以自动转成可以相互比较的类型
-
表达式的返回值必须是(byte short int char enum[枚举] String)
double c=1.1; switch (c){ //错误 case 1.1: //错误 System.out.println("ok3" ); break; }
-
case子句中的值必须是常量,而不能是变量
-
default子句是可选的,当没有匹配的case时,执行default
-
如果没有写break,会顺序执行到switch结尾
请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g a表示星期一,b表示星期二 … 根据用户的输入显示相应的信息.要求使用 switch 语句完成 System.out.println("请输入字符(a~g):"); char A = new Scanner(System.in).next().charAt(0); switch(A){ case 'a': System.out.println("星期一"); break; case 'b': System.out.println("星期二"); break; case 'c': System.out.println("星期三"); break; default: System.out.println("字符不正确,匹配不成功"); } System.out.println("退出switch,继续执行程序");
//对学生成绩大于60分的,输出"合格"。低于60分的, //输出"不合格"。(注:输入的成绩不能大于100), 提示 成绩/60 //思路分析 //1. 这道题,可以使用 分支来完成, 但是要求使用switch //2. 这里我们需要进行一个转换, 编程思路 : // 如果成绩在 [60,100] , (int)(成绩/60) = 1 // 如果成绩在 [0,60) , (int)(成绩/60) = 0 //代码实现 Scanner sc = new Scanner(System.in); System.out.println("请输入成绩在0-100之间:"); double score = sc.nextDouble(); if (score >= 0 && score<=100) { switch ((int) (score / 60)) { case 0: System.out.println("不合格"); break; case 1: System.out.println("合格"); } }else{ System.out.println("请输入成绩在0-100之间"); }
-
-
switch 和 if 的比较
- 如果判断的具体数值不多,并且符合byte short int enum[枚举] String这六种类型,建议switch语句
- 其他情况:对区间判断,对结果为boolean类型判断,使用if ,if的适用范围更广
-
for循环控制
-
基本语法
for(循环变量初始化;循环条件;循环变量迭代){ 循环操作语句; } for(;循环条件;) 可以写到其他地方,但是分号不能省略 也可以有多条语句,但是必须用,隔开 int i=1; for(;i<=10;){ System.out.println("lwh"+i); i++; } System.out.println(i); count=3; (int i = 0,j=0; i<count;i++,j+=2){ System.out.println("i="+i+" j="+j); }
-
打印 1~100 之间所有是 9 的倍数的整数,统计个数及总和. `[化繁为简,先死后活]` 1. 化繁为简 : 即将复杂的需求,拆解成简单的需求,逐步完成 2. 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值 思路分析 打印1~100之间所有是9的倍数的整数,统计个数 及 总和 化繁为简 (1) 完成 输出 1-100的值 (2) 在输出的过程中,进行过滤,只输出9的倍数 i % 9 ==0 (3) 统计个数 定义一个变量 int count = 0; 当 条件满足时 count++; (4) 总和 , 定义一个变量 int sum = 0; 当条件满足时累积 sum += i; int cont=0; int sum=0; for(int i=1;i<=100;i++) { if(i%9==0){ System.out.println("i="+i); cont++; sum+=i; } } System.out.println("个数"+cont+"总和"+sum);
-
-
while循环控制
-
基本语法
循环变量初始化; while(循环条件){ 循环体(语句); 循环变量迭代; } 1. 循环条件是返回一个布尔值的表达式 2. while 循环是先判断再执行语句
-
输出10句 你好,皮卡丘 int i = 1; //循环变量初始化 while( i <= 10 ) { //循环条件 System.out.println("你好,皮卡丘" + i); //执行语句 i++; //循环变量迭代 } System.out.println("退出while ,继续.." + i); // 11
-
打印 1-100 之间所有能被 3 整除的数 [使用 while ] int i =1; while (i<=100){ if(i%3==0){ System.out.println("i="+i); } i++; }
-
-
do while循环控制
-
基本语法
循环变量初始化; do{ 循环体(语句); 循环变量迭代; }while(循环条件); do while 是关键字 也有循环四要素, 只是位置不一样 先执行,再判断,也就是说,一定会至少执行一次 最后 有一个 分号 ; 循环条件是返回一个布尔值的表达式 do…while 循环是先执行,再判断, 因此它至少执行一次
输出 10 句:你好,皮卡丘 int i = 1; do { System.out.println("你好,皮卡丘"+i); i++; } while (i <= 10); System.out.println("退出 do...while 继续执行....");
计算 1—10 的和 int i = 1; int sum = 0; do { sum += i; System.out.println(i); i++; } while (i <= 10); System.out.println("sum="+sum);
统计 1—200 之间能被 5 整除但不能被 3 整除的个数 int a=1; int count=0; do { if(a%5==0&&a%3!=0){ System.out.println("i=" + a); count++; } a++; } while (a<=200); System.out.println("count=" + count);
如果李三不还钱,则李四将一直使出五连鞭,直到李三说还钱为止 化繁为简 (1) 不停的问还钱吗? (2) 使用char answer 接收回答, 定义一个Scanner对象 (3) 在do-while 的while 判断如果是 y 就不在循环 Scanner myScanner = new Scanner(System.in); char answer = ' '; do { System.out.println("李四使出五连鞭~"); System.out.println("李四问:还钱吗?y/n"); answer = myScanner.next().charAt(0); System.out.println("他的回答是" + answer); }while(answer != 'y');//判断条件很关键 System.out.println("李三还钱了");
-
r = new Scanner(System.in);
char answer = ’ ';
do {
System.out.println(“李四使出五连鞭~”);
System.out.println(“李四问:还钱吗?y/n”);
answer = myScanner.next().charAt(0);
System.out.println(“他的回答是” + answer);
}while(answer != ‘y’);//判断条件很关键
System.out.println("李三还钱了");
```