失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 四 【java基础】 程序流程控制- 分支结构

四 【java基础】 程序流程控制- 分支结构

时间:2024-03-07 23:30:33

相关推荐

四 【java基础】 程序流程控制- 分支结构

目录

01 程序流程控制概述

02 顺序结构

03 分支结构

3.1 if-else 结构

3.2 从键盘输入数据(Scanner)

3.2 Switch-case结构

01 程序流程控制概述

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:

顺序结构 程序从上到下逐行执行,中间没有任何判断和跳转分支结构 根据条件,选择性执行某段代码if…else 和switch-case语句循环结构 根据循环条件,重复性执行某段代码while…、do…while、for 三种循环foreach循环,方便遍历

02 顺序结构

03 分支结构

3.1 if-else 结构

if语句三种格式

if-else 使用说明

条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量;语句块只有一条执行语句时,一对{}可以省略,但建议保留;if-else语句结构,根据需要可以嵌套使用;当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略;当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓当多个条件是“包含”关系时,“小上大下/ 子上父下”。

public class IfTest {public static void main(String[] args){int heartbeats = 79;if (heartbeats < 60 || heartbeats > 100){System.out.println("需要做进一步检查");}System.out.println("检查结束");int age = 23;if(age < 0){System.out.println("您输入的数字非法");}else if(age < 18){System.out.println("青少年时期");}else if(age < 35){System.out.println("青壮年时期");}else if(age < 60) {System.out.println("中年时期");}else if ( age < 80){System.out.println("老年时期");}

3.2 从键盘输入数据(Scanner)

/*如何从键盘获取不同类型变量,使用Scanner类具体实现步骤:1: 导包2:Scanner的实例化: Scanner scan = new Scanner(System.in)3:调用Scanner 并获取需要类型的变量*/import java.util.Scanner;public class ScannerTest {public static void main(String[] args){Scanner scan = new Scanner (System.in);System.out.println("输入姓名");String name = scan.next(); //依据不同的方法获取不同的数据类型System.out.println(name);System.out.println("输入年龄");int age = scan.nextInt();System.out.println(age);System.out.println("输入体重");double weight = scan.nextDouble();System.out.println(weight);}}

练习1

/*岳小鹏参加Java 考试,他和父亲岳不群达成承诺:如果:成绩为 100 分时,奖励一辆 BMW成绩为(80 99] 时,奖励一台 iphone xs max当成绩为[60,80]时,奖励一个 iPad其它时,什么奖励也 没有。请从键盘 输入岳 小鹏的期末 成绩,并加以判断*/import java.util.Scanner;public class lianxi1 {public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入期末成绩(0-100");int score = scan.nextInt();if (score == 100){System.out.println("奖励一台Bmw");}else if(score <= 99 && score > 80){System.out.println("奖励一台iphone");}else if (score >= 60 && score <= 80 ){System.out.println("奖励一台ipad");}else{System.out.println("什么也没有");}}}

练习2

/*编写程序:由键盘输入三个整数分别存入变量 num1 、 num2 、 num3对它们进行排序 使用 if else if else 并且从小到大输出。*/import java.util.Scanner;public class SortTest {public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入第一个整数");int num1 = scan.nextInt();System.out.println("输入第二个整数");int num2 = scan.nextInt();System.out.println("输入第三个整数");int num3 = scan.nextInt();// 对数字排序if(num1 >= num2){if(num3 >= num1){ // 只有一行的话 大括号可以省略System.out.println(num2 + " " + num1 + " " + num3);}else if(num3 <= num2){System.out.println(num3 + " " + num2 + " " + num1);}else{System.out.println(num2 + " " + num3 + " " + num1);}}else if (num1 <= num2){if(num3 >= num2){System.out.println(num1 + " " + num2 + " " + num3);}else if(num3 <= num1){System.out.println(num3 + " " + num1 + " " + num2);}else{System.out.println(num1 + " " + num3 + " " + num2);}}}}

练习3

/*我家的狗 5 岁了, 5 岁的狗相当于人类多大呢?其实,狗的前两年每一年相当于人类的 10.5 岁,之后每增加一年就增加四岁。那么 5 岁的狗相当于人类多少年龄呢?应该是: 10.5 + 10.5 + 4 + 4 + 4 = 33 岁。编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人类的年龄。如果用户输入负数,请显示一个提示信息。*/import java.util.Scanner;public class DogTest {public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入狗的年龄");int age = scan.nextInt();if(age <= 0){System.out.println("输入格式错误");}else if(age >= 0 && age <=2){double humanAge = age * 10.5;System.out.println("您的狗相当于" + humanAge + "岁的人类" );}else if(age >= 2){double humanAge = (21 + (age-2) * 4);System.out.println("您的狗相当于" + humanAge + "岁的人类" );}}}

练习4

/*假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票 ,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。1)如果用户输入的数匹配彩票的实际顺序,奖金 10000 美元。2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3000 美元。3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金 1000 美元。4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金 500 美元。5)如果用户输入的数字没有匹配任何一个数字,则彩票作废 。*/import java.util.Scanner;public class CaipiaoTest {public static void main(String[] args){// 随机生成两位数彩票int num = (int)(Math.random()*90 + 10); // Math.random() 生成范围为[0.0,1.0)的随机数int numShi = num / 10;int numGe = num % 10;// 输入数字并进行判断Scanner scan = new Scanner(System.in);System.out.println("请输入猜想号码(两位数)");int guessNum = scan.nextInt();int guessNumShi = guessNum / 10;int guessNumGe = guessNum % 10;if(guessNum == num){System.out.println("10000");}else if(guessNumGe == numShi && guessNumShi == numGe){System.out.println("3000");}else if(guessNumGe == numGe || guessNumShi == numShi){System.out.println("1000");}else if(guessNumShi == numGe || guessNumGe == numShi){System.out.println("500");}else{System.out.println("彩票作废");}System.out.println("中奖号码为:" + num);}}

练习5

/*大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:高:180cm以上;富:财富1千万以上;帅:是。如果这三个条件同时满足,则:“我一定要嫁给他!!!”如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”如果三个条件都不满足,则:“不嫁!”*/import java.util.Scanner;class GaoTest{public static void main(String[] args){// 方法一Scanner scan = new Scanner(System.in);System.out.println("请输入你的身高:(cm)");int height = scan.nextInt();System.out.println("请输入你的财富:(千万)");double weight = scan.nextDouble();//System.out.println("请输入你是否帅:(true/false)");//boolean isHandSome = scan.nextBoolean();//if(height >= 180 && weight >= 1 && isHandSome){//System.out.println("我一定要嫁给他!!!");//}else if(height >= 180 || weight >= 1 || isHandSome){//System.out.println("嫁吧,比上不足,比下有余。");//}else{//System.out.println("不嫁!");//}//方式二System.out.println("请输入你是否帅: (是or否)");String isHandsome = scan.next();if(height >= 100 && weight >= 1 && isHandsome.equals("是")){ System.out.println("我一定要嫁给他!!!");}else if(height >= 180 || weight >= 1 || isHandsome.equals("是")){System.out.println("嫁吧,比上不足,比下有余。");}else{System.out.println("不嫁!");}}}

isHandsome.equals(str) 表示判断与字符串是否相同,若输入“是”,isHandsome.equals(“是”)返回True

3.2 Switch-case结构

注意: switch结构中的表达式,只能是如下的六种数据类型之一:byteshortcharint枚举类型(JDK5.0)、String类型(JDK7.0)

不能是:long,float,double,boolean

case 之后只能声明常量。不能声明范围。default:相当于if-else结构中的else。 default 结构是可选的,而且位置是灵活的。break, 可以使用switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。 可选结构根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,进入相应case结构中,执行相关语句。当调用完执行语句后,则仍然继续向下执行其他case语句,直到遇到break关键字或末尾结束为止。

测试代码

class SwitchTest{public static void main(String[] args){int number = 2;switch(number){case 0: // 与switch中表达式进行比较System.out.println("zero");break;case 1:System.out.println("one");break;case 2:System.out.println("two");break;case 3:System.out.println("three");break;default:System.out.println("other");break;}//*********************************//运行报错,不能运行boolean类型/*boolean isHandSome = true;switch(isHandSome){case true:System.out.println("帅");break;case false:System.out.println("丑");break;default:System.out.println("输入有误!!!");}*///*********************************String season= "summer";switch(season) {case"spring":System.out.println("春暖花开");break;case"summer":System.out.println("夏日炎炎");break;case"autumn":System.out.println("秋高气爽");break;case"winter":System.out.println("冬雪皑皑");break;default:System.out.println("季节输入有误");break;}//**************************************//运行报错/*int age = 10;switch(age){ case age > 18: // case后条件禁止写范围System.out.println("成年了");break;default:System.out.println("未成年");}*/}}

练习1

/*使用 switch 把小写类型的 char 型转为大写。只 转换 a, b, c , d, e. 其它的输出 “other 。提示:String word = scan.next(); char c = word.charAt(0); switch(c){}*/import java.util.Scanner;public class WordChange {public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入要转换的小写字母");String word = scan.next();char c = word.charAt(0); // 转化为charswitch (c){case("a"):System.out.println("A");break;case("b"):System.out.println("B");break;case("c"):System.out.println("B");break;default:System.out.println("other");break;}}}

练习2

/*根据用于指定月份,打印该月份所属的季节。3,4,5 春季6,7,8 夏季9,10,11 秋季12, 1, 2 冬季*/class MonthTest{public static void main(String[] args){int month = 6;switch(month){case 12:case 1:case 2:System.out.println("冬季"); //如果case语句结果一样 可以进行合并break;case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;}}}

练习3

/*编写 程序:从键盘上 输入 年 的“ month ”和 day ”,要求通过程序输出输入的日期 为 年 的 第几天*///这里利用 case 语句 遇到可执行语句时,会一直向下执行直到遇到break跳出的特点,简化计算import java.util.Scanner;public class MonthTest {public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入月份month");int month = scan.nextInt();System.out.println("请输入日期day");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;}System.out.println(sumDays);}}

练习4 (if 和 case 一样可以嵌套)

/*从键盘分别输入年、月、日,判断这一天是当年的第几天注:判断一年是否是闰年的标准:1)可以被 4 整除,但不可被 100 整除或2)可以被 400 整除提示: 只有2月的天数不同*/import java.util.Scanner;public class MonthTest {public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入年份year");int year = scan.nextInt();System.out.println("请输入月份month");int month = scan.nextInt();System.out.println("请输入日期day");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:if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){sumDays += 29; }else{sumDays += 28;}case 2:sumDays += 31;case 1:sumDays += day;}System.out.println(sumDays);}

练习5

/*编写一个程序,为一个给定的年份找出其对应的中国生肖。中国的生肖基于一个周期,每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、rooster、dog、pig。提示::猪 % 12 == 3*/import java.util.Scanner;class ZodiacSignTest{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入年份:");int year = scan.nextInt();switch (year % 12){case 0:System.out.println("monkey");break;case 1:System.out.println("rooster");break;case 2:System.out.println("dog");break;case 3:System.out.println("pig");break;case 4:System.out.println("rat");break;case 5:System.out.println("ox");break;case 6:System.out.println("tiger");break;case 7:System.out.println("rabbit");break;case 8:System.out.println("dragon");break;case 9:System.out.println("snake");break;case 10:System.out.println("horse");break;case 11:System.out.println("sheep");break;}}}

如果觉得《四 【java基础】 程序流程控制- 分支结构》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。