文章目录
传送门:
03 Java流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。其流程控制方式采用结构化程序设计中规定的三种基本流程结构, 即:顺序结构、分支结构和循环结构,如下图所示:
1. 分支结构(选择结构)
1.1 if单分支选择结构
if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句。
案例1:
/*
单分支结构:只做单一条件的判断,如果符合,执行某些事情
*/
public class ifdemo {
public static void main(String[] args) {
//Math.random()产生数据的范围是[0,1)
//得到0-5之间的随机数
int i = (int)(Math.random() * 6);
if (i>3){
System.out.println("值大于3");
}
System.out.println("number:"+i);
}
}
案例2:抽奖
public class IfDemo{
public static void main(String[] args){
//产生三个随机数,范围[0,6)
double i = 6 * Math.random();
double j = 6 * Math.random();
double k = 6 * Math.random();
int count = (int) (i + j + k);
if(count > 15) {
System.out.println("今天手气不错");
}
if(count >= 10 && count <= 15) {
System.out.println("今天手气很一般");
}
if(count < 10) {
System.out.println("今天手气不怎么样");
}
System.out.println("得了" + count + "分");
}
}
条件结果必须是布尔值,建议都加上花括号。如果不加花括号,则只对第一句话有效。写单分支的话需要进行n次的判断,可以用双分支或者多分支结构来代替。
1.2 if-else双分支选择结构
当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
案例1:比较面积与周长
public class IfDemo{
public static void main(String[] args){
//双分支结构,比较面积与周长
int r = 1;
double PI = 3.14;
double area = PI * r * r;
double length = 2 * PI * r;
if(area >= length){
System.out.println("面积大于等于周长");
}else{
System.out.println("周长大于面积");
}
}
}
案例2:会员信息录入
录入会员信息,判断录入的会员号是否合法
import java.util.Scanner;
public class AddCust{
public static void main(String[] args){
System.out.println("欢迎光临马士兵教育会员系统");
System.out.println("添加用户信息");
//创建Scanner对象(文件扫描器对象)
Scanner sc = new Scanner(System.in);
System.out.println("请输入会员号码<4位整数>");
String number = sc.nextLine();
System.out.println("请输入会员生日<日/月>");
String birthday = sc.nextLine();
System.out.println("请输入会员积分");
String score = sc.nextLine();
//判断录入的会员号是否合法
if(number.length()==4){
System.out.println("会员信息如下");
System.out.println(number+"\t"+birthday+"\t"+score);
}else{
System.out.println("会员号码输入错误,请输入4位整数");
}
}
}
案例3:幸运抽奖
抽奖规则:会员号的百位数字等于产生的随机数字即为幸运会员
import java.util.Scanner;
public class Lottery {
public static void main(String[] args){
System.out.println("欢迎登陆马士兵教育抽奖系统");
//创建文件扫描器对象,System.in表示的是标准输入,可以从控制台读取数据(装饰者模式)
Scanner sc=new Scanner(System.in);
//会员号的百位数字等于产生的随机数字即为幸运会员来进行抽奖
System.out.println("请输入4位会员卡号:");
//键入4位会员号码
int card=sc.nextInt();
//因为是4位数,所以限制输入在1000-9999之间
if(card>=1000 && card<=9999){
//得到输入的数中的百位数字
int bai=card/100%10;
//得到随机数n,n每一次都会取值0-9中的任意一个
int n=(int)(Math.random()*10);
//如果会员号的百位数字等于产生的随机数字,则为幸运会员
if(bai==n){
System.out.println(card+"号客户是幸运会员。");
}else{
System.out.println(card+"号客户,谢谢您的支持!");
}
}
}
}
补充:Scanner类,文件扫描器对象
import java.util.Scanner;
public class IfDemo{
public static void main(String[] args){
//Scanner
//创建文件扫描器对象,System.in表示的是标准输入,可以从控制台读取数据(装饰者模式)
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据");
//nextLine用于读取一整行的数据
//注意:每次读取回来的值都是字符串类型,需要进行类型转换
String str = sc.nextLine();
System.out.println(str);
}
}
1.3 if-else if-else多分支结构
逐条if语句进行判断,条件匹配进入语句体,否则对if语句继续匹配。可以进行多个条件的判断,每个匹配项可以选择不同的执行结果。其语法格式为:
if(布尔表达式1){
语句块1;
}else if(布尔表达式2){
语句块2;
}else{
语句块n;
}
案例1:根据年龄进行分类
public class IfDemo{
public static void main(String[] args){
//多分支结构
int age = (int)(Math.random()*10);
if(age<10){
System.out.println("儿童");
}else if(age<20){
System.out.println("少年");
}else if(age<30){
System.out.println("青年");
}else if(age<50){
System.out.println("中年");
}else if(age<70){
System.out.println("老年");
}else{
System.out.println("耄耋");
}
}
}
案例2:对学员的结业考试成绩评测
- 成绩>=90:优秀
- 成绩>=80:良好
- 成绩>=60:中等
- 成绩<60:差
public class IfDemo{
public static void main(String[] args){
//多分支结构
int score = (int)(Math.random()*100);
if(score>=90){
System.out.println("优秀");
}else if(score>=80){
System.out.println("良好");
}else if(score>=60){
System.out.println("中等");
}else{
System.out.println("差");
}
}
}
案例3:多重if买车问题
我想买车,买什么车决定于我在银行有多少存款
-
如果我的存款超过500万,我就买凯迪拉克
-
否则,如果我的存款超过100万,我就买帕萨特
-
否则,如果我的存款超过50万,我就买依兰特
-
否则,如果我的存款超过10万,我就买奥托
-
否则,我买捷安特
public class IfDemo{
public static void main(String[] args){
//多分支结构
int save = 1500000;
if(save>=5000000){
System.out.println("买凯迪拉克");
}else if(save>=1000000){
System.out.println("买帕萨特 ");
}else if(save>=500000){
System.out.println("买依兰特");
}else if(save>=100000){
System.out.println("买奥托 ");
}else{
System.out.println("买捷安特");
}
}
}
案例4:多重if计算会员折扣
需求说明: 会员购物时,根据积分的不同享受不同的折扣,计算会员购物时获得的折扣
public class IfDemo{
public static</