目录

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

/*
编写 程序:从键盘上 输入 2019 年 的“ month ”和 day ”,要求通过程序
输出输入的日期 为 2019 年 的 第几天*///这里利用 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

/*
编写一个程序,为一个给定的年份找出其对应的中国生肖。
中国的生肖基于12年一个周期,每年用一个动物代表:
rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、rooster、dog、pig。
提示:2019年:猪2019 % 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基础】 程序流程控制- 分支结构相关推荐

  1. Java之程序流程控制

    文章目录 1. 程序流程控概述 2. 顺序结构 3.分支语句 3.1.分支语句1:if-else结构 3.1.1.输入语句 3.2. 分支语句2:switch-case结构 4.循环结构 4.1.fo ...

  2. JavaScript流程控制-分支结构

    流程控制主要有三种结构,分别是顺序结构,分支结构. 1 .if语句 if语句的结构: if(表达式){ 执行语句 } if语句的执行思路             如果if的条件表达式为真 true,则 ...

  3. C#流程控制————分支结构

    1.顺序结构 顺序结构:程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行. 2.分支结构--if 分支结构:if 1.if语句 if(判断条件) { 要执行的代码; } 判断条件:一般 ...

  4. java流程控制if_java程序流程控制(分支结构之 if-else)

    if语句三种格式: 1.if(true){ //代码执行 } 2.if(条件表达式){ //代码执行 }else{ //代码执行 } 3.if(条件表达式){ //执行代码块 }else if(条件表 ...

  5. MATLAB学习笔记之matlab程序流程控制

    MATLAB程序流程控制 顺序结构程序 程序和程序设计 程序的三种基本结构 脚本文件和函数文件 文件的建立 顺序结构 数据的输入 数据的输出 程序的暂停 a=input('a='); b=input( ...

  6. 一文带你深入理解【Java基础】· Java基本语法:程序流程控制

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  7. 【Java基础】· Java基本语法:程序流程控制习题总结

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  8. 【 js基础 Day2】js的流程控制:分支语句,循环.顺序结构

    复习 JavaScript简称为JS JavaScript是什么? 是一门脚本语言:不需要编译,直接运行 是一门解释性的语言:遇到一样代码就解释一行代码 C#语言是一门面向对象的语言,也是编译语言,是 ...

  9. Java笔记2.3——Java基本语法之程序流程控制

    Java基础 Java基本语法(下):程序流程控制 目录 目录 Java基础 Java基本语法(下):程序流程控制 一.程序流程控制 1.理论 2.分支语句1: if-else结构 2.1.if-el ...

最新文章

  1. 【MATLAB】符号数学计算(七):符号微积分、符号微分方程求解、符号代数方程求解
  2. 2015年二级c语言真题及答案,2015年计算机二级C语言测试题及答案(4)
  3. MySQL性能结构优化原理(技术核心)
  4. 海外IDC数据中心为什么要做REITs
  5. WordPress get_allowed_mime_types函数(wp-includes/functions.php)存在跨站脚本漏洞
  6. java fix_Java中的低延迟FIX引擎
  7. 快速开发工作流_01_简单流程案例
  8. mysql添加用户权限报1064 - You have an error in your SQL syntax问题解决
  9. 网页嵌入对象(图片、视频、网页)
  10. Vue父组件访问子组件属性和方法、父子组件双向绑定(两种方法)
  11. vue element-ui NavMenu错位问题
  12. gsonformat安装怎么使用_json解析—Gson以及GsonFormat插件的运用
  13. 多车道交通流理论与应用研究综述思维导图
  14. C++操作MySQL大量数据插入效率低下的解决方法
  15. Python 使用企业邮箱发邮件被识别为外部邮箱的问题及解决方案
  16. 推荐一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件 —— 定时执行专家
  17. Python spider爬取高清电影
  18. 《平衡掌控者 游戏数值战斗设计》学习笔记(四)技能与装备设计
  19. Android开发学习持续更新中
  20. Centos8怎么进行复位清屏? Centos8终端复位清屏的技巧

热门文章

  1. 英特尔oneAPI简介
  2. 山东中职计算机专业考本科,山东省教育厅下通知:中职生今后不能再考本科
  3. Vue 和 jQuery 两者之间的区别是什么?
  4. 法规标准-UN R158标准解读
  5. 【python】无规律时间步长时序数据转为固定步长
  6. IoT 恶意软件攻击剖析
  7. java判断是否已数字结尾,正则表达式测试字符串是否以数字结尾
  8. EDA技术 一:EDA技术概况及大规模可编程逻辑器件
  9. pdf转换成txt转换器怎么用
  10. 模拟计算机 电磁,计算机模拟带电粒子在电磁场中的运动.pdf