目录
引入
【1】流程控制的作用:
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成一定功能的小逻辑模块。
【2】控制语句的分类:
控制语句分为三类:顺序、选择和循环
“顺序结构”代表“先执行a,再执行b”的逻辑。
“条件判断结构”代表“如果...,则再继续..."的逻辑。
分支结构(选择结构)
if
单分支
【1】语法结构:
if(布尔表达式){
语句块
}
if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。
【2】示例代码:
public class class1208 {
public static void main(String[] args){
//实现一个功能:给出三个数(1-6),对三个数求和计算,根据和的大小来分配不同的奖品
//1.给出三个数:
int num1 = 2;
int num2 = 6;
int num3 = 5;
//2.求和
int sum = 0;
sum += num1;
sum += num2;
sum += num3;
System.out.println(sum);
//3.根据和判断奖品:
//如果和大于等于14,那么就是一等奖
if(sum >= 14){
System.out.println("一等奖");
}
if(sum >10 && sum<14){
System.out.println("二等奖");
}
if(sum < 5){
System.out.println("三等奖");
}
/*
if-单分支语句:
结构:
if(条件表达式,这个表达式的结果是布尔值,要么是true,要么是false){
//如果上面()中的表达式返回结果是true,那么执行{}中的代码
//如果上面()中的表达式返回结果是false,那么不执行{}中的代码
}
上述代码中,使用三个单分支语句拼凑成三个选择,依次判断是否满足
if中的条件表达式根据问题来完成。
{}可以省略不写,但是一旦省略,if只负责后面的一句话
* */
}
}
多分支
【1】语法结构:
if(布尔表达式1){
语句块1;
}else if(布尔表达式2){
语句块2;
}...
else if(布尔表达式n){
语句块n;
}else{
语句块n+1;
}
//当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;......
代码:
public class class1208 {
public static void main(String[] args){
//实现一个功能:给出三个数(1-6),对三个数求和计算,根据和的大小来分配不同的奖品
//1.给出三个数:
int num1 = 2;
int num2 = 6;
int num3 = 5;
//2.求和
int sum = 0;
sum += num1;
sum += num2;
sum += num3;
System.out.println(sum);
//3.根据和判断奖品:
//如果和大于等于14,那么就是一等奖
//多分支
/*
结构:
if(){
}else if(){
}else if(){
}...
else{
}
* */
//多分支的好处:只要满足一个分支以后,后面的分支就不需要判断了 -->效率高
if(sum >= 14){
System.out.println("一等奖");
}else if(sum >10){
System.out.println("二等奖");
}else {
System.out.println("三等奖");
}
}
}
双分支
【1】语法结构:
if(布尔表达式){
语句块1
}else{
语句块2
}
随机数
【1】定义:这个数咋在生成之前不确定为多少
在Java中依靠一个类:Math类帮助我们生成,这个类中有一个方法专门用来生成随机数:
static double random() //返回带正号的double值,该值大于等于0.0且小于1.0
Math.random() ------>[0.0,1.0)
Math.random()*10 -------->[0.0,10.0)
(int)(Math.random()*10) ----->[0.0,9]
(int)(Math.random()*10)+1 ----->[1,10]
【2】代码示例:
public class class1208 {
public static void main(String[] args){
//实现一个功能:给出三个数(1-6),对三个数求和计算,根据和的大小来分配不同的奖品
//1.给出三个数:
int num1 = (int)(Math.random()*10)+1;
int num2 = (int)(Math.random()*10)+1;
int num3 = (int)(Math.random()*10)+1;
//2.求和
int sum = 0;
sum += num1;
sum += num2;
sum += num3;
System.out.println(sum);
//3.根据和判断奖品:
//如果和大于等于14,那么就是一等奖
//多分支
/*
结构:
if(){
}else if(){
}else if(){
}...
else{
}
* */
//多分支的好处:只要满足一个分支以后,后面的分支就不需要判断了 -->效率高
if(sum >= 10){
System.out.println("中奖了");
}else{
System.out.println("没中奖");
}
//if-else双分支可以用条件运算符进行替换:
System.out.println(sum>=10?"中奖了":"没中奖");
}
}
分支的嵌套使用
【题目1】会员购物时,不同积分享受的折扣不同,规则如下:
计算会员购物时获得的折扣,效果如下:
代码实现:
import java.util.Scanner;
public class class1209_1 {
public static void main(String[] args){
//控制台录入积分
Scanner sc = new Scanner(System.in);
System.out.print("请输入会员积分:");
//判断录入的积分是不是int类型的
if(sc.hasNextInt()==true){
//将这个int类型的数据接收
int x=sc.nextInt();
//判断这个积分是否是正数
if (x>=0){
//根据积分判断折扣
String discount="";
if(x>=8000){
discount="6折";
}else if (x>=4000){
discount="7折";
}else if (x>=2000){
discount="8折";
}else{
discount="9折";
}
System.out.println("该会员享受的折扣为:"+discount);
}else{
System.out.println("积分不能为负数!");
}
}else{
System.out.println("输入的积分必须是整数!");
}
}
}
【题目2】
小朋友搬桌子:
年龄大于7岁,可以搬桌子
如果年龄在[5,7),性别为男,可以搬桌子;
否则不可以搬桌子,提示:你还太小
import java.util.Scanner;
public class class1209_2 {
public static void main(String[] args){
//1.录入小朋友的年龄
Scanner sc = new Scanner(System.in);
System.out.println("请输入小朋友的年龄:");
int age=sc.nextInt();
//根据年龄判断是否能搬桌子
if(age>7){
System.out.println("可以搬桌子");
}else if(age>=5){
//2.录入小朋友的性别
System.out.println("请输入小朋友的性别:");
String sex=sc.next();
if (sex.equals("男")){
System.out.println("可以搬桌子");
}else{
System.out.println("还太小,不能搬桌子");
}
}else{
System.out.println("年龄太小,不能搬桌子");
}
}
}
switch
【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
import java.util.Scanner;
public class class1209_3switch语句 {
public static void main(String[] args){
//录入成绩
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = sc.nextInt();
//判断成绩等级
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;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
System.out.println("E");
break;
default:
System.out.println("输入有误");
}
}
}