热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Java基本语法程序流程控制

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java基本语法--程序流程控制相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java基本语法--程序流程控制相关的知识,希望对你有一定的参考价值。




流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构。本篇博客主要是对Java基本语法中的程序流程控制进行详细讲解...

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构。本篇博客主要是对Java基本语法中的程序流程控制进行详细讲解。



目录:



  • 顺序结构

    程序从上到下逐行地执行,中间没有任何判断和跳转



  • 分支结构

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



    • if-else分支语句



    • switch-case分支语句





  • 循环结构

    根据循环条件,重复性的执行某段代码



    • for循环语句



    • while循环语句



    • do....while循环语句





  • 其他内容



    • 死循环&嵌套的应用

    • break&continue关键字

    • 附加说明



♫♬:JDK1.5提供了foreach循环,方便的遍历集合、数组元素




顺序结构
Java中定义成员变量时采用合法的前向引用

顺序结构

/*正确方式,在代码块内顺序执行*/
public class Demo11{
int number1 = 10;
int number2 = 12;
int number3 = number1 + number2;
System.out.println(number3);
}
/*错误
class Demo2{
int num1 = 10;
int num3 = num1 + num2;
int num2 = 12;
System.out.println(num3);
}
*/



分支结构

if-else分支语句

if 语句三种格式:

if(条件表达式){
执行代码块;
}

if(条件表达式){
执行代码块1;
}esle{
执行代码块2;
}

if(条件表达式1){
执行代码块1;
}else if(条件表达式2){
执行代码块2;
}
......
else{
执行代码块n;
}

if-else使用说明:

⚘ 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

⚘ 语句块只有一条执行语句时,一对{}可以省略,但建议保留

⚘ if-else语句结构,根据需要可以嵌套使用

⚘ 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

⚘ 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是“包含”关系时,“小上大下 / 子上父下”

✒ 分支结构最终返回的是一个值

练习:

判断成绩:
0<=score<60:不及格;
60<=score<70:及格;
70<=score<80:良好;
80<=score<100:优秀;

public class scoreDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩(百分制整数):");
int score = sc.nextInt();
// 多选一
if(score >= 0 && score <60) {
System.out.println("成绩不及格");
}else if(score >= 60 && score <70) {
System.out.println("成绩及格");
}else if(score >= 70 && score <80) {
System.out.println("成绩良好");
}else if(score >= 80 && score <= 100) {
System.out.println("成绩优秀");
}else {
System.out.println("请输入正确的百分制分数");
}
//嵌套使用
if(score <= 100){
if(score <= 80) {
if(score <= 70) {
if(score <= 60) {
System.out.println("成绩不及格");
}else {
System.out.println("成绩及格");
}
}else {
System.out.println("成绩良好");
}
}else {
System.out.println("成绩优秀");
}
}
}
}

switch-case分支语句

switch-cas结构:

switch(表达式){
case 常量1:
执行语句1
//breark;
case 常量2:
执行语句2
//breark;
......
case 常量n:
执行语句n
//breark;
default:
执行语句;
//break;
}

switch-case使用说明:

⚘ witch(表达式)中表达式的值 必须是下述几种类型之一:byte ,short,char,int,枚举 (jdk 5.0),String (jdk 7.0)

⚘ case子句中的值必须是常量,不能是变量名或不确定的表达式值

⚘ 同一个switch语句,所有case子句中的常量值互不相同

⚘ break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾,根据实际情况选择加不加

⚘ default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default,相当于if-else中末尾的else

练习:

判断成绩:

public class switchScoreDemo {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩(百分制):");
int score = sc.nextInt();
switch (score / 10) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("成绩不及格");
break;
case 6:
System.out.println("成绩及格");
break;
case 7:
System.out.println("成绩良好");
break;
case 8:
case 9:
case 10:
if(score==100){
System.out.println("成绩优秀");
break;
}
default:
System.out.println("请输入正确的百分制整数");
break;
}
}
}



循环结构
**循环语句的四个组成部分:**

☯ 初始化部分(init_statement)

☯ 循环条件部分(test_exp)

☯ 循环体部分(body_statement)

☯ 迭代部分(alter_statement)



for循环语句

for循环语法格式:

for(➊初始化部分;➋循环条件部分;➍迭代部分){
➌循环体部分;
}
//执行过程➊-➋-➌-➍-➋-➌-➍-...-条件不满足/break跳出

for循环使用说明:

⚘ ②循环条件部分为boolean类型表达式,当值为false时,退出循环

⚘ ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔

⚘ ④可以有多个变量更新,用逗号分隔

⚘ for循环可以进行多重嵌套

⚘ 使用break可以跳出循环(for,while,do-while)

⚘ ①可以在for循环外定义,④可以在③中定义,但是②循环条件必须在for()中声明,需要注意的是①定义在for()中,其作用域就在for(){}内

练习:

1、输出abcbcbc

2、输出9*9乘法表

public class forDemo {
public static void main(String args[]) {
//输出abcbcbc方法一
int n = 1;
for(System.out.print("a");n<=3;System.out.print(\'c\'),n++) {
System.out.print(\'b\');
}
System.out.println( );

//输出abcbcbc方法二
int m = 1;
System.out.print(\'a\');
for(;m<=3;) {
m++;
System.out.print("bc");
}
System.out.println("");

//9*9乘法表
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}
}
}

展示效果:



while循环语句

while循环语法格式:

➊初始化部分
while(➋循环条件部分){
➌循环体部分;
➍迭代部分;
}
//执行过程➊-➋-➌-➍-➋-➌-➍-...-条件不满足/break跳出

while循环使用说明:

⚘ 注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环

⚘ for循环和while循环,do...while循环可以相互转换

练习:

输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数
字立方和等于其本身。

例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

public class whileDemo {
public static void main(String args[]) {
System.out.println("水仙花数:");
int i = 100;
while(i <1000) {
int hundred = i / 100;
int decade = i % 100 /10;
int bits = i % 10;
int num = hundred * hundred * hundred + decade * decade * decade + bits * bits * bits;
if(i == num) {
System.out.println(i);
}
i++;
}
}
}

do...while循环语句

➊初始化部分
do{
➌循环体部分;
➍迭代部分;
}while(➋循环条件部分);
//执行过程➊-➌-➍-➋-➌-➍-...-条件不满足/break跳出

do...while循环使用说明:

⚘ while循环和do...while循环用法一致,不同的是do...while至少执行一次

练习:

输出0123456789字符串

public class doWhileDemo {
public static void main(String args[]) {
int i = 0;
String s = "";
do{
s += i;
i++;
}while(i <= 9);
}
}

其他内容

无限循环&嵌套的应用



  • “无限循环”

    //格式
    for(;;){
    执行语句;
    //在某种条件下break跳出循环
    }
    while(true){
    执行语句;
    //在某种条件下breaK跳出循环
    }
    do{
    执行语句;
    //在某种条件下break跳出循环
    }while(true);

    ⚘ 无限循环存在的原因是并不
    知道循环多少次,需要根据循环体内部某些条件来控制循环的结束



  • 嵌套

    ⚘ 分支语句,循环语句都可以相互嵌套,但是最好不要超过三层

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

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

    ⚘ 设外层循环次数为m次,内层为n次,外层循环执行一次内层循环执行n次,总的内层循环体实际上需要执行m*n次




break&continue关键字



  • break关键字

⚘ break语句用于终止某个语句块的执行

⚘ break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是
哪一层语句块

public class Demo {
public static void main(String args[]) {
//9*9乘法表
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}
// 当i=6时直接break
System.out.println("直接break");
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
if(j == 6) {
break;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}

System.out.println("break la2");
System.out.println("break la2");
la1: for(int i = 1; i <= 9; i++){
la2:for(int j = 1; j <= i; j++){
if(j == 6) {
break la2;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}

System.out.println("break la1");
la1: for(int i = 1; i <= 9; i++) {
la2: for(int j = 1; j <= i; j++){
if(j == 6) {
break la1;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}

System.out.println();
System.out.println("continue la2");
la1: for(int i = 1; i <= 9; i++) {
la2: for(int j = 1; j <= i; j++){
if(j == 6) {
continue la2;
}
System.out.print(i + "*" + j + "=" + (i*j)+" ");
}
System.out.println();
}
}
}

展示效果:






  • continue关键字

⚘ continue只能使用在循环结构中

⚘ continue语句用于跳过其所在循环语句块的一 一 次执行,继续下一次循环

⚘ continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,同break的用法类型


附加说明

⚘ eturn:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束

⚘ 与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内

⚘ break只能用于switch语句和循环语句中

⚘ continue 只能用于循环语句中

⚘ break和continue二者功能类似,但continue是终止本次循环,break是终止本层循环

⚘ break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句

⚘ 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面

⚘ 很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条
语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的



本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布



推荐阅读
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 本文主要介绍了gym102222KVertex Covers(高维前缀和,meet in the middle)相关的知识,包括题意、思路和解题代码。题目给定一张n点m边的图,点带点权,定义点覆盖的权值为点权之积,要求所有点覆盖的权值之和膜qn小于等于36。文章详细介绍了解题思路,通过将图分成两个点数接近的点集L和R,并分别枚举子集S和T,判断S和T能否覆盖所有内部的边。文章还提到了使用位运算加速判断覆盖和推导T'的方法。最后给出了解题的代码。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 集合的遍历方式及其局限性
    本文介绍了Java中集合的遍历方式,重点介绍了for-each语句的用法和优势。同时指出了for-each语句无法引用数组或集合的索引的局限性。通过示例代码展示了for-each语句的使用方法,并提供了改写为for语句版本的方法。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 本文介绍了如何使用OpenXML按页码访问文档内容,以及在处理分页符和XML元素时的一些挑战。同时,还讨论了基于页面的引用框架的局限性和超越基于页面的引用框架的方法。最后,给出了一个使用C#的示例代码来按页码访问OpenXML内容的方法。 ... [详细]
author-avatar
手机用户2502862581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有