分支控制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(;循环条件;) 可以写到其他地方,但是分号不能省略 也可以有多条语句,但是必须用,隔开
int i=1;
for(;i<=10;){
System.out.println("lwh"+i);
i++;
}
System.out.println(i);
count=3;
(int i = 0,j=0; i 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("李三还钱了");
```



