Java基本语法--程序流程控制
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构。本篇博客主要是对Java基本语法中的程序流程控制进行详细讲解。
目录:
-
程序从上到下逐行地执行,中间没有任何判断和跳转
-
根据条件,选择性地执行某段代码
-
根据循环条件,重复性的执行某段代码
♫♬: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基本语法--程序流程控制的更多相关文章
- 【Java基础】基本语法-程序流程控制
基本语法-程序流程控制 程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺 ...
- Java基础之程序流程控制
Java中的程序流程控制 Java中的程序流程分为三种结构:①顺序结构:②分支结构:③循环结构 一.顺序结构 Java中定义成员变量的时候,采用的是前向引用,也就是后面的变量可以引用之前定义好的变量. ...
- Java基础语法(4)-流程控制
title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...
- Java基础语法与流程控制
Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...
- Java基础语法02——流程控制
流程控制:顺序结构.分支结构(if-else.switch-case).循环结构(for.while.do-while)
- 第2章 Java基本语法(下): 流程控制--项目(记账本)
2-5 程序流程控制 2-5-1 顺序结构 2-5-2 分支语句1:if-else结构 案例 class IfTest1{ public static void main(String[] args) ...
- Java笔记(六)……程序流程控制
判断结构 三种结构: 1: if(条件表达式) 2: { 3: 执行语句; 4: } 5: 6: if(条件表达式) 7: { 8: 执行语句; 9: } 10: else 11: { 12: 执行 ...
- Java学习day4 程序流程控制一
一.分支结构 条件语句:if...else if语句: 一个 if 语句包含一个布尔表达式和一条或多条语句,如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代 ...
- java中的程序流程控制
一.布尔逻辑1.布尔运算符:①短路和——&&:判断两个表达式,如果第一个为真,继续判断第二个表达式,如果第一个为假,就不需要判断第二个变大时②和——&:判断两个表达式,如果第一 ...
随机推荐
- gradle与android studio 关系及gradle配置
前言 我们一般开发android 使用android studio ,android studio 安装的时候,会帮我们做两件事,配置好自己的jdk. 实际上,使用的其实不是我们在path中配置的jd ...
- Redis-异步消息
关于异步消息,大家都知道,如下: 这些用起来都是比较复杂的,RabbitMQ先要创建Exchange,在创建Queue,还要将Queue和Exchange通过某种规则绑定起来.发消息之前要指定rout ...
- IDAE快捷键与设置
以前做项目的时候都是用Eclispe,来到新的公司发现IDE用的是IDEA集成开发工具,以前也用过IDEA,只是略懂略懂,以后你会发现,当你用IDEA的快捷键的时候,会6的飞起 1.IDEA常用快捷键 ...
- C语言 putchar
C语言 putchar putchar主要功能是输出一个char.可以根据ASLL号码输出对应字符 案例 #define _CRT_SECURE_NO_WARNINGS #include <st ...
- 38.Python自定义计算时间过滤器
在写自定义的过滤器时,因为django.template.Library.filter()本身可以作为一个装饰器,所以可以使用: register = django.template.Library( ...
- 基于云开发开发 Web 应用(二):界面 UI 开发
工作量分析 在我们进行这部分开发的时候,接下来我们需要进行相应的功能安排和分类. 简单看来,我需要开发 3 个页面: 首页:首页负责用户默认访问. 列表页:列表页面则是在搜索过程中,如果有多个结果,则 ...
- 【EasyUI总结】EasyUI开发中遇到的坑
普遍: 1.easyui在书写键值对的时候要注意是否要加引号,在需要加引号的地方不加则无法渲染: datagrid数据网格: 1.datagrid默认请求方式是post,如果要使用分页功能pagina ...
- cat - EOF标志的使用
前提 cat命令是用于连接文件并输出到标准输出设备或指定文件中. EOF为标志,可以替换为其他字符串 代码块 ``` 将文件内容作为标准输出也就是将文件内容输出到屏幕中,也可写作 cat filena ...
- SQL Server远程数据库操作(备份、还原等)
· SQL Server远程数据库备份到本地: exp sauser/sapassword@192.168.8.233:1433/DBName file=d:/backup.dmp OWNER=sum ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:mapreduce和yarn命令
实验目的 了解集群运行的原理 学习mapred和yarn脚本原理 学习使用Hadoop命令提交mapreduce程序 学习对mapred.yarn脚本进行基本操作 实验原理 1.hadoop的shel ...