Java自学笔记(流程控制-分支结构)
2021/7/17 11:05:29
本文主要是介绍Java自学笔记(流程控制-分支结构),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
分支结构(if…else、switch-case)
1. if…else结构
if
语句有三种格式
-
if (条件表达式) { 执行代码块; // 语句块 }
-
if (条件语句) { 执行代码块1; } else{ 执行代码块2; }
-
if (条件表达式1) { 执行代码块1; } else if (条件表达式2) { 执行代码块2; } .... else { 执行代码块n; }
使用说明:
-
条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
-
语句块只有一条执行语句时,一对{}可以省略,但建议保留
-
if-else语句结构,根据需要可以嵌套使用
-
当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
-
当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
-
当多个条件是“包含”关系时,“小上大下 / 子上父下”
例题:
- 成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入成绩,并加以判断
代码示例:
// if-else 语句练习 import java.util.Scanner; // 导入Scanner类 class Exercise { public static void main(String[] args) { System.out.println("请输入成绩"); Scanner input = new Scanner(System.in); //System.in表示标准化输出,也就是键盘输出 int num = input.nextInt(); // 接收键盘输入数据 if (num == 100) { System.out.println("奖励一辆BMW"); } else if (num > 80 && num < 99) { System.out.println("奖励一台iphone xs"); } else if (num > 60 && num < 80) { System.out.println("奖励一个 iPad"); } else { System.out.println("没有奖励"); } } }
- 假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
代码示例:
import java.util.Scanner; // 作用:用来构建Scanner对象 /* import的作用: 1. 加载已定义好的类或包 2. 导入支持类(可以是JDK基础类或者自己编写的类),可以供本类调用方法和属性。 */ // 彩票(lottery)游戏 class Lottery { public static void main(String[] args) { // Scanner scan = new Scanner(System.in); // Scanner实例化 / System.in表示标准化输出,也就是键盘输出 int value = (int)(Math.random() * 90 + 10); // 从[10 , 99]随机取值 System.out.println("随机数:" + value); System.out.println("请输入一个二位数"); Scanner input = new Scanner(System.in); //System.in表示标准化输出,也就是键盘输出 int num = input.nextInt(); // // 接收键盘输入数据 int numGe = num/10 , numShi = num%10; int valueGe = value/10 , valueShi = value%10; if(num == value) { System.out.println("奖金10000美元"); } else if(numGe == valueShi && numShi == valueGe) { System.out.println("奖金3000美元"); } else if(numGe == valueGe || numShi == valueShi) { System.out.println("奖金1000美元"); } else if(numGe == valueShi || numShi == valueGe) { System.out.println("奖金500美元"); } else { System.out.println("彩票作废"); } } }
- 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:高:180cm以上;富:财富1千万以上;帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
代码示例:
import java.util.Scanner; // 构建Scanner对象 class Marriage { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("身高:(cm)"); int stature = scan.nextInt(); System.out.println("财富:(千万)"); double wealth = scan.nextDouble(); System.out.println("帅否:(true/false)"); boolean isHandsome = scan.nextBoolean(); if(stature > 180 && wealth > 1 && isHandsome) { System.out.println("我一定要嫁给他!!!"); } else if(stature > 180 || wealth > 1 || isHandsome) { System.out.println("嫁吧,比上不足,比下有余。"); } else { System.out.println("不嫁!"); } } }
知识点:从键盘获取不同类型的标量:需要使用
Scanner
类
- ① 导包:
import java.util.Scanner;
- ② Scanner 的实例化:
Scanner scan = new Scanner(System.in);
- ③ 调用 Scanner 类的相关方法(next() / nextXxx()),来获取指定的变量
2. switch-case结构
switch(表达式) { case 值1: 语句块1; break; case 值2: 语句块2; break; … case 值n: 语句块n; break; default: 语句块n+1; break; }
注意:
switch
(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);case
子句中的值必须是常量,不能是变量名或范围;
同一个switch语句,所有case子句中的常量值互不相同;break
(停止)语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾default
子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default
例题:
1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch©{}
代码示例:
import java.util.Scanner; class Capital { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入a,b,c,d,e:"); String word = scan.next(); char c = word.charAt(0); switch(c) { case 'a': System.out.println("A"); break; case 'b': System.out.println("B"); break; case 'c': System.out.println("C"); break; case 'd': System.out.println("D"); break; case 'e': System.out.println("E"); break; } } }
2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
代码示例:
import java.util.Scanner; // 导包,构建Scanner对象 class Grade01 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // Scanner 实例化 System .out.println("请输入成绩:"); int num = scan.nextInt(); // 获取键盘输入数据 int grade = num/60; // 以下为 switch-case 语句 switch(grade) { case 1: System.out.println("合格"); break; case 0: System.out.println("不合格"); break; } } }
3.根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
代码示例:
import java.util.Scanner; class Senson { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入月份:"); int num = scan.nextInt(); switch(num) { case 3: case 4: case 5: System.out.print("春季"); break; case 6: case 7: case 8: System.out.print("夏季"); break; case 9: case 10: case 11: System.out.print("秋季"); break; case 12: case 1: case 2: System.out.print("冬季"); break; } } }
- 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序
输出输入的日期为2019年的第几天
代码示例:
import java.util.Scanner; class DateText { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入2019年月份:"); int month = scan.nextInt(); System.out.println("请输入2019年天数:"); int day = scan.nextInt(); // 定义一个变量保存天数 int SumDays = 0; switch(month) { case 12: SumDays += 30; case 11: SumDays += 31; case 10: SumDays += 30; case 9: SumDays += 31; case 8: SumDays += 31; case 7: SumDays += 30; case 6: SumDays += 31; case 5: SumDays += 30; case 4: SumDays += 31; case 3: SumDays += 28; case 2: SumDays += 31; case 1: SumDays += day; break; } System.out.println((month + "月" + day) + "为2019年的第 " + SumDays + " 天"); } }
总结:
- 对一个变量进行条件判断时,如果既可以使用
if
语句,又可以使用switch
语句,应优先选择switch
语句。(switch
语句效率高于if
语句) if
语句的使用范围更广。因此,使用switch-case
的,都可以使用if-else
;但使用if-else
的,不一定可以使用switch-case
这篇关于Java自学笔记(流程控制-分支结构)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门