Java流程控制详解 您所在的位置:网站首页 java流程控制的实验心得 Java流程控制详解

Java流程控制详解

2024-07-10 19:55| 来源: 网络整理| 查看: 265

一、流程控制概述

        在Java程序中,JVM默认总是顺序执行以分号;结束的语句。但是,在实际的代码中,程序经常需要做条件判断、循环,因此,需要有多种流程控制语句,来实现程序的跳转和循环等功能。

        流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。              其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:                 顺序结构                 分支结构                 循环结构

 二、顺序结构

        顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

        总的来说:程序按照从上到下的顺序执行。

 Java顺序结构示例代码:

public class Order { public static void main(String[] args) { System.out.println(1); System.out.println(2); System.out.println(3); } } 三、分支结构

        根据条件,选择性地执行某段代码。

        有if…else和switch-case两种分支语句。

3.1 if单分支语句

语法:         if(条件表达式){                 语句块;         } 解释:         条件表达式结果为boolean类型,当表达式结果为true,则执行语句块;否则什么都不执行!         当语句块只有一条执行语句时,一对{}可以省略,但建议保留。

 Java if单分支示例代码:

public class IfTest { public static void main(String[] args) { int a = 10; int b = 10; if(a > b){ System.out.println("a 大于 b"); } System.out.println("-------------"); if(a==b){ System.out.println("a 等于 b"); } } }

练习题:

        张浩Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他.

public class Prize { public static void main(String[] args) { int score1 = 100; // 张浩的Java成绩 int score2 = 72; // 张浩的音乐成绩 if ( ( score1 >98&& score2 > 80 )|| ( score1 == 100 && score2 > 70 ) ){ System.out.println("老师说:不错,奖励一个MP4!"); } } } 3.2 if双分支语句

语法:         if(条件表达式){                 语句块A;         }else{                 语句块B;         } 解释:         条件表达式结果为boolean类型,当表达式结果为true,则执行语句块A;否则执行语句块B。         if-else语句结构,根据需要可以嵌套使用。

public class IfDemo { public static void main(String[] args) { int a = 10; int b = 10; if(a == b){ System.out.println("a 等于 b"); }else{ System.out.println("a 不等于 b"); } System.out.println("---------------"); if(a > b){ System.out.println("a 大于 b"); }else{ System.out.println("a 不大于 b"); } System.out.println("---------------"); int age = 3; if(age >= 3 && age < 6){ System.out.println("符合入园年龄,可以报名。"); }else{ System.out.println("赶紧去上小学把。"); } } }

练习题:

        如果张浩Java考试成绩大于98分,老师就奖励他一个MP4,否则老师就罚他进行编码。

public class SimpleIf { public static void main(String[] args) { int score = 91; // 张浩的Java成绩 if (score > 98) { System.out.println("老师说:不错,奖励一个MP4!"); } else { System.out.println("老师说:惩罚进行编码!"); } } } 3.3 if多分支语句

语法:         if(条件表达式A){                 语句块A;         }else if(条件表达式B){                 语句块B;         }...         else if(条件表达式N){                 语句块N;         }else{                 语句块N+1         } 解释:         所有的条件表达式结果都是boolean类型。         如果条件表达式A结果为true,则执行语句块A,否则去判断条件表达式B;         如果条件表达式B结果为true,则执行语句块B,否则去判断条件表达式C;         ....         如果所有的条件表达式结果都为false,则执行语句块N+1         else是可选的,根据需要可以省略

        注:                 当多个条件是“互斥”关系(没有交集)时,条件判断语句及执行语句间顺序无所谓                 当多个条件是“非互斥”关系(有交集)时,需要根据实际情况,考虑如何定义顺序。                 当多个条件是“包含”关系时,“小上大下 / 子上父下”

为什么使用多重if选择结构?

问题:对学员的结业考试成绩评测         成绩大于等于90时,评估结果为:优秀         成绩为(80-89)时,评估结果为:良好             成绩为(60-79)时,评估结果为:中等         成绩小于60时,评估结果为:差

分析:将成绩分成几个连续区间判断。使用单个if选择结构无法完成,使用多个if选择结构很麻烦 ,所以要使用多重if选择结构。

int score = 70; //考试成绩 if ( score >= 90 ) { System.out.println("优秀"); } else if (score >= 80 ) { System.out.println("良好"); } else if (score >= 60 ) { System.out.println("中等"); } else { System.out.println("差"); }

练习题:

我想买车,买什么车决定于我在银行有多少存款         如果我的存款超过500万,我就买凯迪拉克         否则,如果我的存款超过100万,我就买帕萨特         否则,如果我的存款超过50万,我就买依兰特         否则,如果我的存款超过10万,我就买奥托         否则,我买捷安特

请从键盘输入我的存款,并加以判断         需要Scanner类         1、导包,Scanner类在java.util.Scanner包下         2、实例化Scanner对象         3、调用Scanner类相关API,获取相应类型的变量         注:如果输入类型不匹配,会抛出异常!

// 扫描器类 Scanner input = new Scanner(System.in); // 输入int类型的值 int money = input.nextInt(); // 我的存款,单位:万元 // 判断 if (money >= 500) { System.out.println("太好了,我可以买凯迪拉克"); } else if (money >= 100) { System.out.println("不错,我可以买辆帕萨特"); } else if (money >= 50) { System.out.println("我可以买辆依兰特"); } else if (money >= 10) { System.out.println("至少我可以买个奥托"); } else { System.out.println("看来,我只能买个捷安特了"); }

练习题:

        定义三个int型变量并赋值,使用三元运算符或者if-else获取这三个数中的较大数的实现

// 声明三个变量并赋值 int num1 = 10,num2 = 20,num3 = -5; // 声明max变量,根据判断赋值 int max; if(num1 >= num2 && num1 >= num3){ max = num1; }else if(num2 >= num1 && num2 >= num3){ max = num2; }else{ max = num3; }

练习题:

        编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人类的年龄。如果用户输入负数,请显示一个提示信息。         算法:狗的前两年每一年相当于人类的10.5岁,之后每增加一年就增加四岁。

int dogAge = 7; if(dogAge >= 0 && dogAge 2){ System.out.println("相当于人的年龄:" + (2 * 10.5 + (dogAge - 2) * 4)); }else{ System.out.println("狗狗还没出生呢!"); } 3.4 嵌套if

为什么使用嵌套if?

问题:学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组。

分析:         要判断是否能够进入决赛。         在确定进入决赛的情况下,还要判断是进入男子组,还是进入女子组。      解决:         使用嵌套if选择结构

语法参考:  if(条件1) {         if(条件2) {               代码块1         } else {               代码块2         } } else {         代码块3 }

if(score                 ③循环体部分                 ④迭代部分         }while(②循环条件部分);

执行过程:         ①-③-④-②-③-④-②-③-④-...②

解释:         先执行do对应的语句块,然后再判断循环条件,只要循环条件满足,则一直执行循环体,否则结束循环。 特点:先执行,再判断;do-while循环至少执行一次循环体。

public class DoWhileLoop { public static void main(String[] args) { int sum = 0; int i = 1; do{ sum+=i; i++; }while(i 10){ System.out.println("hello:while"); number1--; } int number2 = 10; do{ System.out.println("hello:do-while"); number2--; }while(number2 > 10); 4.4 for循环

语法:         for( ①初始化循环条件; ②循环条件表达式 ; ④迭代部分 ){                 ③循环操作(循环体);         }

执行过程:         ①-②-③-④-②-③-④-②-③-④-.....-②

解释:         1、先执行初始化循环条件         2、使用初始表达式值进行条件判断,如果判断为true,则执行循环操作;否则结束循环         3、进行迭代         4、循环迭代可以在()里面省略,在循环体里面进行迭代也可。

 练习题:

循环输入某同学结业考试的5门课成绩,并计算平均分         1、分析循环条件和循环操作         2、套用for语法写出代码         3、检查循环是否能够退出

// 定义sum,用来存储叠加求和 int sum = 0; // 循环5次录入5门课成绩 for(int i = 0; i < 5; i++){ System.out.print("请输入5门功课中第" + (i+1) + "门课的成绩: "); score = input.nextInt(); //录入成绩 sum = sum + score; //计算成绩和 } // 计算平均分 avg = sum / 5; System.out.println(name + "的平均分是:" + avg);

三种循环对比:

执行顺序         先判断,后执行: while 和 for         先执行,后判定: do-while     适用         循环次数确定: 一般使用for         循环次数不确定: 一般使用while 和 do-while

4.5 循环嵌套

        将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。

        实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。

        设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。

// 打印五颗星 ***** // System.out.println("*****"); for (int i = 1; i                 ....                 continue;                 ....         }

解释:         continue只能使用在循环结构中         continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环         continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环

public class ContinueTest { public static void main(String args[]) { for (int i = 0; i < 10; i++) { if (i == 3) continue; System.out.println(" i = " + i); } } }

练习题:

循环录入Java课的学生成绩,统计分数大于等于80分的学生比例          1、通过循环,获得分数大于等于80分的学生人数num         2、判断:如果成绩



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有