文章目录
- 03 Java流程控制语句
-
- 1. 分支结构(选择结构)
-
- 1.1 if单分支选择结构
- 1.2 if-else结构选择双分支
- 1.3 if-else if-else多分支结构
- 1.4 嵌套if分支结构
- 1.5 switch多分支选择结构
- 1.6 比较switch和多重if选择结构
- 2. 课后分支结构作业
-
- 2.1 快速拨号
- 2.2 迷你计算器
- 2.3 机票打折
- 3. 循环结构
-
- 3.1 while循环
- 3.2 for循环
- 4. 课后循环结构作业
- 5. 跳转语句break、continue和return
-
- 5.1 跳转语句break
- 5.2 跳转语句continue
- 5.3 跳转语句return
- 6.多重循环
- 7. 递归算法
- 8. 总结
:
- 1.JAVA前瞻
- 2.JAVA数据类型和操作符
- 3.Java流程控制语句
- 4.Java数组
- 5.Java面向对象编程
- 6.JAVASE 异常和常用类
- 7.JAVA容器
03 Java流程控制语句
??流程控制句是用来控制程序中每个句子的执行顺序的句子,可以将句子组合成一个小逻辑模块,可以完成一定的功能。其过程控制模式采用结构化程序设计中规定的三种基本过程结构, 即:,如下图所示:
1. 分支结构(选择结构)
1.1 if单分支选择结构
??if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句。
:
/* 单分支结构:只判断单一条件,如果符合,执行某些事情 */ 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); } }
:抽奖
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部分。
:比较面积与周长
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("周长大于面积");
}
}
}
:会员信息录入 录入会员信息,判断录入的会员号是否合法
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位整数");
}
}
}
:幸运抽奖
抽奖规则:会员号的百位数字等于产生的随机数字即为幸运会员
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;
}
:根据年龄进行分类
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("耄耋");
}
}
}
:对学员的结业考试成绩评测
- 成绩>=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("差");
}
}
}
:多重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("买捷安特");
}
}
}
:多重if计算会员折扣
需求说明: 会员购物时,根据积分的不同享受不同的折扣,计算会员购物时获得的折扣
public class IfDemo{
public static void main(String[] args){
//多分支结构
int score = (int)(Math.random()*10000);
if(score>=8000){
System.out.println("享受6折折扣");
}else if(score>=4000){
System.out.println("享受7折折扣");
}else if(score>=2000){
System.out.println("享受8折折扣");
}else{
System.out.println("享受9折折扣");
}
}
}
1.4 嵌套if分支结构
在分支结构中嵌套分支结构。嵌套的层数并没有限制。其格式为:
if(条件1){
if(条件2){
代码块1
}else{
代码块2
}
}else{
代码块3
}
:
学校举行运动会,百米赛跑跑入20秒内的学生有资格进决赛,根据性别分别进入男子组和女子组,要判断是否能够进入决赛,在确定进入决赛的情况下,还要判断是进入男子组,还是进入女子组。
public class IfDemo{
public static void main(String[] args){
//嵌套分支结构
int time = (int)(Math.random()*20);
if(time<20){
System.out.println("恭喜进入决赛");
//三目运算符
String sex = ((int)(Math.random()*2))==0?"girl":"boy";
if(sex=="girl"){
System.out.println("欢迎进入女子组");
}else{
System.out.println("欢迎进入男子组");
}
}else{
System.out.println("成绩太差,被淘汰");
}
}
}
:折扣计算
需求说明: 普通顾客购物满100元打9折;会员购物打8折;会员购物满200元打7.5折
import java.util.Scanner; public class Discount { public static void main(String[] args) { //
键盘录入信息,并获取所录的信息 Scanner sc = new Scanner(System.in); System.out.println("请输入您是否为会员:"); String member = sc.nextLine(); System.out.println("请输入购买金额:"); double money = sc.nextDouble(); //通过if-else嵌套语句来进行判断 if(member == 'yes'){ if(money>=200){ System.out.println("尊敬的会员,您好,您实际应付的金额为"+money*0.75); }else{ System.out.println("尊敬的会员,您好,您实际应付的金额为"+money*0.8); } }else{ if(money>=100){ System.out.println("尊敬的顾客,您好,您实际的应付金额为"+money*0.9); }else{ System.out.println("尊敬的顾客您好,您应付的金额为"+money); } } } }
1.5 switch多分支选择结构
根据表达式值的不同,执行许多不同的操作。switch一般用作等值判断。其格式为:
switch(表达式){
case 值1;
语句序列;
[break];
case 值2;
语句序列;
[break];
...
[default:
默认语句;]
}
-
switch语句会根据表达式的值从相匹配的执行,一直执行到break标签处开始ak语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句(如果有的话)
-
只能处理的情况,且表达式必须为byte,short,int或char类型 ,不能是String或 double,float。(1.7之后可以使用string)
-
常量值必须是与表达式类型兼容的特定的一个常量
-
不允许有重复的case值
-
default子句为可选
:判断元音、半元音、辅音
public class IfDemo{
public static void main(String[] args){
//switch多分支结构
/*注意: 1、每个case模块中要添加break,防止多次匹配 2、如果多个case中处理的逻辑代码块的功能一致,可以考虑只在最后添加一次处理 3、default表示默认选项,当所有的case不匹配的时候,会执行此选项 4、defult可以有,也可以没有 */
int random = (int)(Math.random()*26);
char ch = (char)('a'+random);
switch(ch){
/* case 'a': Syste