Java学习笔记(四)——程序控制结构

一、顺序控制

二、分支控制

(一)单分支

(二)双分支

(三)多分支

(四)嵌套分支

 (五)switch分支结构

(六)if和switch的选择

三、循环控制

(一)for循环

(二)while循环

(三)do while循环

(四)多重循环控制

 (五)跳转控制语句-break

(六)跳转控制语句-continue

(七)跳转控制语句-return

一、顺序控制

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

二、分支控制

让程序有选择的执行。

(一)单分支

基本语法:

if(条件表达式){

        执行代码块;

}

说明:当条件表达式为true时,就会执行{}的代码;如果为false就不执行。

import java.util.Scanner; //表示把java.util下的Scanner类导入public class If01{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.print("请输入年龄:");int age = myScanner.nextInt(); //接收用户输入intif(age > 18){System.out.println("你年龄大于18,要对自己的行为负责");}System.out.println("程序继续...");}
}

(二)双分支

基本语法:

if(条件表达式){

        执行代码块1;

}else{

        执行代码块2;

}

说明:当条件表达式为true时,就会执行代码块1,否则执行代码块2。

import java.util.Scanner; //表示把java.util下的Scanner类导入public class If02{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.print("请输入年龄:");int age = myScanner.nextInt(); //接收用户输入intif(age > 18){System.out.println("你年龄大于18,要对自己的行为负责");}else{System.out.println("你的年龄不大,这次放过你了");}System.out.println("程序继续...");}
}

(三)多分支

基本语法:

if(条件表达式1){

        执行代码块1;

}else if(条件表达式2){

        执行代码块2;

}

......

else{

        执行代码块n;

}

注意:多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有

import java.util.Scanner; public class If03{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.print("请输入芝麻信用分:");int grade = myScanner.nextInt(); // 数据正确性验证if(grade >= 1 && grade <=100){if(grade == 100){System.out.println("信用极好");}else if(grade >80 && grade <= 99){System.out.println("信用优秀");}else if(grade >=60 && grade <= 80){System.out.println("信用一般");}else{System.out.println("信用不及格");}}else{System.out.println("信用分需要在1-100,请重新输入:)");}}
}

(四)嵌套分支

在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支结构称为内层分支,外面的分支结构称为外层分支。规范:不要超过3层(可读性不好)。

基本语法:

if(){

        if(){

        }else{

        }

}

import java.util.Scanner; public class If04{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.print("请输入该歌手的初赛成绩:");double score = myScanner.nextDouble(); // 数据正确性验证if(score >= 0 && score <=10){if(score > 8.0){System.out.print("请输入性别:");char sex = myScanner.next().charAt(0); if(sex == '男'){System.out.println("恭喜进入复赛男子组");}else if(sex == '女'){System.out.println("恭喜进入复赛女子组");}else{System.out.println("性别输入有误,请重新输入:)");}}else{System.out.println("不好意思,你被淘汰了");}}else{System.out.println("初赛成绩需要在0-10,请重新输入:)");}}
}

 (五)switch分支结构

基本语法:

switch(表达式){

        case 常量1: 语句块1;break;

        case 常量2: 语句块2;break;

        ......

        case 常量n: 语句块n;break;

        default:default语句块;break;

}

1、switch关键字,表示switch分支

2、表达式对应一个值

3、case 常量1:当表达式等于常量1,就执行语句块1

4、break:表示退出switch

5、如果和case 常量1匹配,就执行语句块1,如果没有匹配,就继续匹配case 常量2

6、如果一个都没有匹配上,执行default

import java.util.Scanner; public class Switch01{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.print("请输入一个字符(a-g):");char ch = myScanner.next().charAt(0);switch(ch){case 'a':System.out.println("星期一");break;case 'b':System.out.println("星期二");break;case 'c':System.out.println("星期三");break;case 'd':System.out.println("星期四");break;case 'e':System.out.println("星期五");break;case 'f':System.out.println("星期六");break;case 'g':System.out.println("星期七");break;default:System.out.println("输入的字符不正确,没有匹配");break;} }
}

细节:

1、表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的,比如输入的字符是字符,而常量是int

2、switch(表达式)中表达式的返回值必须是:byte,short,int,char,enum(枚举),String

3、case子句中的值必须是常量或常量表达式,而不能是变量

4、default子句是可选的,当没有匹配的case时,执行default

5、break语句用来在执行完一个case分支后使程序跳出switch语句块。如果没有写break,程序会顺序执行到switch结尾,除非遇到break。(穿透)

import java.util.Scanner; public class Switch04{public static void main(String[] args){// 根据用于指定月份,打印该月份所属季节。3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2,冬季Scanner myScanner = new Scanner(System.in);System.out.print("请输入月份(0-12):");int month = myScanner.nextInt();switch(month){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;case 12:case 1:case 2:System.out.println("冬季");break;default:System.out.println("输入的月份不正确");break;} }
}

(六)if和switch的选择

1、如果判断的具体数值不多,而且符合byte,short,int,char,enum,String这6种类型。虽然两个语句都可以使用,建议使用switch语句。

2、其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

三、循环控制

(一)for循环

基本语法:

for(循环变量初始化;循环条件;循环变量迭代){

        循环操作;

}

1、for关键字,表示循环控制

2、for有四要素:(1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代

3、循环操作,这里可以有多条语句,也就是我们要循环执行的代码

细节:

1、循环条件是返回一个布尔值的表达式

2、for(;循环判断条件;)中的初始化和变量迭代可以写到其他地方,但是两边的分号不能省略

3、循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

import java.util.Scanner;
public class For01{public static void main(String[] args){// 1-100中能被num整除的数的个数、和Scanner myScanner = new Scanner(System.in);int num = myScanner.nextInt();int start = 1;int end = 100;int count = 0;int sum = 0;for(int i = start; i <= end; i++){if(i % num == 0){count++;sum += i;}}System.out.println("count=" + count + ",sum=" + sum);}
}
// 输出小写的a-z以及大写的A-Z
public class Homework07{public static void main(String[] args){for(char i = 'a'; i <= 'z'; i++){System.out.print(i + " ");}System.out.println();for(char i = 'A'; i <= 'Z'; i++){System.out.print(i + " ");}}
}

(二)while循环

基本语法:

while(循环条件){

        循环体(语句);

        循环变量迭代;

};

说明:while循环也有四要素(循环变量初始化、循环条件、循环操作、循环变量迭代),只是四要素放的位置不一样。

细节:1、循环条件是返回一个布尔值的表达式 2、while循环是先判断再执行语句

import java.util.Scanner;
public class While01{public static void main(String[] args){// 1-100中所有能被num整除的数Scanner myScanner = new Scanner(System.in);int num = myScanner.nextInt();int end = 100;int i = 1;while(i <= end){if(i % num == 0){System.out.println(i);}i++;}}
}

(三)do while循环

基本语法:

do{

        循环体(语句);

        循环变量迭代;

}while(循环条件);

说明:先执行再判断,至少执行一次


public class DoWhile02{public static void main(String[] args){// 统计1-200中能被5整除但不能被3整除的数的个数int end = 200;int i = 1;int count = 0;do{if(i % 5 == 0 && i % 3 != 0){count++;}i++;}while(i <= end);System.out.println("count=" + count);}
}

(四)多重循环控制

1、将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do..while均可以作为外层循环和内层循环。(建议一般使用两层,最多不要超过3层,否则代码的可读性很差)

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

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

 九九乘法表:

public class MulFor02{public static void main(String[] args){for(int i = 1; i <= 9; i++){for(int j = 1; j <= i; j++){System.out.print(j + "*" + i + "=" + j * i + '\t');}System.out.println('\n');}}
}

 (五)跳转控制语句-break

break语句用于终止某个语句块的执行,一般使用在switch或者循环中。

 注意事项和说明:

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

2、标签的基本使用:

label1:{ ......

label2:        {......

label3:                {   ......

                                break label2;

                                ......

                            }

                     }

              }

(1)break语句可以指定退出哪层

(2)label1是标签,由程序员指定

(3)break后指定到哪个label就退出到哪里

(4)实际开发中,尽量不要使用标签

(5)如果没有指定break,默认退出最近的循环体


public class Break01{public static void main(String[] args){label1:for(int i = 0; i < 4; i++){label2:for(int j = 0; j < 10; j++){if(j == 2){break label1;}System.out.println("j = " + j);}}}
}

(六)跳转控制语句-continue

1、continue语句用于结束本次循环,继续执行下一次循环

2、continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用规则一样。


public class Continue01{public static void main(String[] args){label1:for(int i = 0; i < 4; i++){label2:for(int j = 0; j < 10; j++){if(j == 2){// continue; //等价于continue label2// continue label2;continue label1;}System.out.println("j = " + j);}}}
}

(七)跳转控制语句-return

return使用在方法,表示跳出所在的方法。如果return写在main方法,退出程序。


public class Return01{public static void main(String[] args){for(int i = 1; i <= 5; i++){if(i == 3){System.out.println("hello" + i);return;}System.out.println("hello world!");}System.out.println("go on...");}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/162725.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Megatron-LM GPT 源码分析(一) Tensor Parallel分析

引用 本文基于开源代码 https://github.com/NVIDIA/Megatron-LM &#xff0c;通过GPT的模型运行示例&#xff0c;从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。 Tensor Parallel源码分析

uniapp(uncloud) 使用生态开发接口详情4(wangeditor 富文本, 云对象, postman 网络请求)

wangeditor 官网: https://www.wangeditor.com/v4/pages/01-%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8/01-%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8.html 这里用vue2版本,用wangeditor 4 终端命令: npm i wangeditor --save 开始使用 在项目pages > sy_news > add.vue 页面中…

免密码方式获取Hive元数据

前言 开发中可能用到hive的元数据信息 ,如获取hive表列表、hive表字段、hive表数据量大小、hive表文件大小等信息,要想获取hive元数据信息即需要hive元数据库的账号及密码,此次提供的是一种不需要hive元数据库密码及可获取元数据信息的方式,且此种方式是只读 组件:hive …

程序员必备的IP查询工具

shigen坚持日更的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。坚持记录和分享从业两年以来的技术积累和思考&#xff0c;不断沉淀和成长。 hello&#xff0c;今天shigen给大家分享一下如何优雅的查询IP的工具。我们先看一下效果&a…

CSS的美化(文字、背景) Day02

一、文字控制属性 分为&#xff1a;字体样式属性 、文本样式属性 1.1 CSS字体样式属性 1.color定义元素内文字颜色2.font-size 字号大小3 font-family 字体4 font-weight 字体粗细5.font-style 字体风格6.font 字体综合属性 1.1.1 > 文字颜色 color 属性名: color color …

序列化和反序列化指令在PLC通信上的应用

在了解本篇博客之前,大家可以熟悉下序列化指令的相关介绍,详细内容如下: 博途PLC 1200/1500 PLC 序列化和反序列化指令编程应用_博图序列化和反序列化-CSDN博客序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输…

在 Python 脚本中设置环境变量

环境变量是与系统进程交互的一种深入方式&#xff1b; 它允许用户获得有关系统属性、路径和已经存在的变量的更详细信息。 我们如何使用环境变量 如上所述&#xff0c;环境变量促使我们与系统进程进行交互。 我们可以使用环境变量来访问系统中的所有变量和键。 为此&#xff…

6 个可解锁部分 GPT-4 功能的 Chrome 扩展(无需支付 ChatGPT Plus 费用)

在过去的几个月里&#xff0c;我广泛探索了 ChatGPT 的所有可用插件。在此期间&#xff0c;我发现了一些令人惊叹的插件&#xff0c;它们改进了我使用 ChatGPT 的方式&#xff0c;但现在&#xff0c;我将透露一些您需要了解的内容。 借助 Chrome 扩展程序&#xff0c;所有 Chat…

Windows:VS Code IDE安装ESP-IDF【保姆级】

物联网开发学习笔记——目录索引 Visual Studio Code&#xff08;简称“VS Code”&#xff09;是Microsoft向开发者们提供的一款真正的跨平台编辑器。 参考&#xff1a; VS Code官网&#xff1a;Visual Studio Code - Code Editing. Redefined 乐鑫官网&#xff1a;ESP-IDF…

分类算法-逻辑回归与二分类

1、逻辑回归的应用场景 广告点击率是否为垃圾邮件是否患病金融诈骗虚假账号 看到上面的例子&#xff0c;我们可以发现其中的特点&#xff0c;那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器。 2、 逻辑回归的原理 2.1 输入 逻辑回归的输入就是一个线性…

python二次开发CATIA:CATIA Automation

CATIA 软件中有一套逻辑与关系都十分严谨的自动化对象&#xff0c;它们从CATIA(Application)向下分支。每个自动化对象&#xff08;Automation Object&#xff0c;以下简称Object&#xff09;都有各自的属性与方法。我们通过程序语言调用这些 Object 的属性与方法&#xff0c;便…

C语言 内存

内存分配 内存分配的类型 C/C中内存分为5个区&#xff0c;分别为栈区、堆区、全局/静态存储区、常量存储区、代码区 静态内存分配&#xff1a;编译时分配&#xff0c;包括全局、静态全局、静态局部三种变量。 动态内存分配&#xff1a;运行时分配&#xff0c;包括栈&#x…

SVM支持向量机

定义 支持向量机&#xff08;SVM&#xff09;&#xff0c;Supported Vector Machine,基于线性划分&#xff0c;输出一个最优化的分隔超平面&#xff0c;该超平面不但能将两类正确分开,且使分类间隔(margin)最大 **所有训练数据点距离最优分类超平面的距离都要大于支持向量距离…

【docker】查看容器日志

目录 一.通过查找宿主机日志路径&#xff0c;通过Linux命令查看即可。 1.1 查看容器日志路径 1.2 按照日志路径检索日志 二、通过docker命令检索日志 2.1 查看指定时间后的日志&#xff0c;只显示最后20行 2.2 查看最近10分钟的日志 2.3 查看某时间段之后的日志 2.4 查…

SpringCloud-Nacos

一、介绍 &#xff08;1&#xff09;作为服务注册中心和配置中心 &#xff08;2&#xff09;等价于&#xff1a;EurekaConfigBus &#xff08;3&#xff09;nacos集成了ribbon&#xff0c;支持负载均衡 二、安装 &#xff08;1&#xff09;官网 &#xff08;2&#xff09; …

【算法设计zxd】第6章 回溯法

目录 6.1 回溯法的设计技术 &#xff1a; 四皇后问题 回溯法&#xff1a; 算法框架&#xff1a; 思考题&#xff1a; 回溯算法的适用条件 【例6-1】求满足下列不等式的所有整数解&#xff1a; 6.2回溯算法的经典例题 【例6-2】装载问题  问题分析 计算模型  算法设计与描…

网络安全常见问题隐患及其应对措施

随着数字化时代的到来&#xff0c;网络安全已经成为组织和个人面临的严重挑战之一。网络攻击日益普及&#xff0c;黑客和不法分子不断寻找机会侵入系统、窃取敏感信息、破坏服务和网络基础设施。在这种情况下&#xff0c;了解网络安全的常见问题隐患以及如何应对它们至关重要。…

Golang学习:基础知识篇(三)—— Map(集合)

Golang学习&#xff1a;基础知识篇&#xff08;三&#xff09;—— Map集合 前言什么是Golang&#xff1f;Map集合定义 Map综合实例补充 前言 很久之前就想学Go语言了&#xff0c;但是一直有其他东西要学&#xff0c;因为我学的是Java嘛&#xff0c;所以后面学的东西一直是跟J…

机器学习基础之《回归与聚类算法(3)—线性回归优化:岭回归》

一、什么是岭回归 其实岭回归就是带L2正则化的线性回归 岭回归&#xff0c;其实也是一种线性回归。只不过在算法建立回归方程时候&#xff0c;加上L2正则化的限制&#xff0c;从而达到解决过拟合的效果 二、API 1、sklearn.linear_model.Ridge(alpha1.0, fit_interceptTrue…