分支选择结构
if单分支
if(布尔表达式){
语句块
}
结构:
if(条件表达式,这个表达式的结果是布尔值:要么是false,要么是true){
//{}中的代码是否执行,取决于()中表达式的返回结果
}
if多分支
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}……
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
if双分支
if(布尔表达式){
语句块1
}else{
语句块2
}
双分支可以使用条件运算符代替!a?b:c
随机数
在java中依靠一个类:Math类帮助我们生成,这个类中有一个方法专门用来生成随机数。
Math.random() -------> [0.0,1.0)
Math.random()*6 ----->[0.0,6.0)
(int)(Math.random()*6) ----->[0,5]
(int)(Math.random()*6) +1 ----->[1,6]
例如:[32,98] - [0,66]+32 - (int)(Math.random()*67) + 32
分支结构练习1
会员购物时,不同积分享受的折扣不同,规则如下:
本题主要考的是 程序的优化:
import java.util.Scanner;
public class TestIf04{
public static void main(String[] args){
//1.给出积分:
Scanner sc = new Scanner(System.in);
System.out.print("请输入会员积分:");
//先判断键盘录入的数据是不是int类型的
if(sc.hasNextInt()==true){//是int类型数据:
//将这个int类型的数据接收:
int score = sc.nextInt();
//判断这个积分是否是正数:
if(score>=0){
String discount = "";
//2.根据积分判断折扣:
if(score>=8000){
discount = "0.6";
}else if(score>=4000){
discount = "0.7";
}else if(score>=2000){
discount = "0.8";
}else{
discount = "0.9";
}
System.out.println("该会员享受的折扣为:"+discount);
}else{//score<0
System.out.println("对不起,你录入的积分是负数!不符合需求!");
}
}else{//不是int类型的数据
System.out.println("你录入的积分不是整数!");
}
}
}
分支结构练习2
小朋友搬桌子:
年龄大于7岁,可以搬桌子;
如果年龄大于5岁,性别是男,可以搬桌子;
否则不可以搬动桌子,提示:你还太小了
本题主要考的是:逻辑
方式1:性别用0或者1接收:
import java.util.Scanner;
public class TestIf05{
public static void main(String[] args){
//1.录入小朋友的年龄:
Scanner sc = new Scanner(System.in);
System.out.println("请录入小朋友的年龄:");
int age = sc.nextInt();
//2.根据年龄判断:
if(age>=7){
System.out.println("yes");
}else if(age>=5){
//录入小朋友的性别;
System.out.println("请录入小朋友的性别:男:1 女 :0");
int sex = sc.nextInt();
if(sex==1){//男生
System.out.println("yes");
}else{//女孩
System.out.println("no");
}
}else{//age<5
System.out.println("no");
}
}
}
方式2:性别用男或者女接收:
import java.util.Scanner;
public class TestIf06{
public static void main(String[] args){
//1.录入小朋友的年龄:
Scanner sc = new Scanner(System.in);
System.out.println("请录入小朋友的年龄:");
int age = sc.nextInt();
//2.根据年龄判断:
if(age>=7){
System.out.println("yes");
}else if(age>=5){
//录入小朋友的性别;
System.out.println("请录入小朋友的性别:");
String str = sc.next();
char sex = str.charAt(0);
if(sex=='男'){
System.out.println("yes");
}else{
System.out.println("no");
}
}else{//age<5
System.out.println("no");
}
}
}
swith分支
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
… … … … …
[default:默认语句;]
}
switch后面是一个(),()中表达式返回的结果是一个等值,这个等值的类型可以为:
int,byte,short,char,String,枚举类型
练习:根据给出的学生分数,判断学生的等级:
public class TestSwitch{
public static void main(String[] args){
/*
实现一个功能:
根据给出的学生分数,判断学生的等级:
>=90 -----A
>=80 -----B
>=70 -----C
>=60 -----D
<60 -----E
*/
//1.给出学生的成绩:
int score = 167;
//2.根据成绩判断学生的等级:
switch(score/10){
case 10 :
case 9 : System.out.println("A级");break;
case 8 : System.out.println("B级");break;
case 7 : System.out.println("C级");break;
case 6 : System.out.println("D级");break;
default:System.out.println("成绩错误");break;
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 : System.out.println("E级");break;
}
/*
【1】语法结构:
switch(){
case * :
case * :
.......
}
【2】**switch后面是一个(),()中表达式返回的结果是一个等值,这个等值的类型可以为:
int,byte,short,char,String,枚举类型**
【3】这个()中的等值会依次跟case后面的值进行比较,如果匹配成功,就执行:后面的代码
【4】为了防止代码的“穿透”效果:在每个分支后面加上一个关键词break,遇到break这个分支就结束了
【5】类似else的“兜底”“备胎”的分支:default分支
【6】default分支可以写在任意的位置上,但是如果没有在最后一行,后面必须加上break关键字,
如果在最后一行的话,break可以省略
【7】相邻分支逻辑是一样的,那么就可以只保留最后一个分支,上面的都可以省去不写了
【8】switch分支和if分支区别:
表达式是等值判断的话--》if ,switch都可以
如果表达式是区间判断的情况---》if最好
【9】switch应用场合:就是等值判断,等值的情况比较少的情况下
*/
}
}
有不懂的地方可以私信~
部分内容来源于马士兵教育赵姗姗老师的Java笔记。