流程控制
2022/4/20 23:15:31
本文主要是介绍流程控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、语句与代码段
一个由分号(;)结尾的单一命令是一条语句(Statement),一条语句一般是一行代码,但也可以占多行
代码。
int a = 1; // 变量定义及初始化语句
用大括号({…… })围起来的多条语句构成一个代码段(Code block);同时代码段也包括大括号前的一
些修饰性描述:
class Aclass {
for (int i=0; i<=1; i++) {
…… ……
}
}
二、变量
变量:程序中的基本存储单元,其定义包括变量名、变量类型和作用域几个部分,定义格式为:
类型 变量名=值;
Java中变量的缺省初值都是确定的:
布尔变量的初值为:false
整数变量的初值为:0
浮点数变量的初值为:0.0
引用(复合)变量的初值为:null
三、变量的作用域
指可访问变量的一段代码,在程序中不同的地方声明的变量具有不同的作用域:局部变量、类变量、方
法参数、例外处理参数。在一定的作用域内,变量名必须唯一。
作用域(Scope):决定了变量可使用的范围
全局变量(Global variables):变量可以在整个类中被访问;
局部变量( Local variables ):变量只能在定义其的代码段中被访问。
作用域规则:在一个代码段中定义的变量只能在该代码段或者该代码段的子代码段中可见。
使用局部变量比使用全局变量更安全。
public static void main(String[] args) { // 片段1 int a = 10; { a = 20; System.out.println(a); // 正常输出20,没有错误 } // 片段2 { int b = 20; System.out.println(b); // 正常输出20,没有错误 } // b = 30; // 此处报错,b已经超出其有效范围 int b = 30; // 需要再重新声明int类型的变量b System.out.println(b); } |
四、常量
常量就是特殊的变量,不能修改值的变量。
定义格式为:
final Type varName = value [, varName [ =value] …];
final int globalAccount = 100, nationalAccount = 50;
final double PI=3.14159
五、Java代码语句的执行顺序
(一)顺序语句
从上到下顺序执行,是java默认的执行顺序
public static void main(String[] args) { System.out.println("语句1"); System.out.println("语句2"); System.out.println("语句3"); System.out.println("语句4"); System.out.println("语句5"); System.out.println("语句6"); }
|
(二)分支语句
选择语句
(三)循环语句
反复执行一段语句,直到满足循环终止条件为止
六、单分支语句
(一)语法
if(条件表达式){
语句1;
语句2;
...
}
(二)说明
1. 条件表达式返回true,执行大括号里的语句
2. 否则不执行大括号里的语句,执行if后面的语句
3. 如果大括号里的语句只有一条,可以省略大括号,但是不推荐
(三)案例
张浩Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他
思路:
- 输入java成绩和音乐成绩,存入变量
- 判断条件:
(Java成绩大于98分 && 音乐成绩大于80分)||(Java成绩等于100分&&音乐成绩大于70分)
满足:奖励
import java.util.Scanner; public class T03if { public static void main(String[] args) { //1.输入java成绩和音乐成绩,存入变量 Scanner scanner = new Scanner(System.in); System.out.println("请输入java成绩:"); int java = scanner.nextInt(); System.out.println("请输入音乐成绩:"); int music = scanner.nextInt(); //2.判断条件: // (Java成绩大于98分 && 音乐成绩大于80分)||(Java成绩等于100分&&音乐成绩大于70分) //满足:奖励 if ((java>98 && music>80)||(java==100 && music>70)){ System.out.println("老师给奖励"); } } }
|
请输入java成绩: 100 请输入音乐成绩: 71 老师给奖励 |
七、双分支if
(一)语法
if(条件表达式){
语句1;
}else{
语句2;
}
(二)说明
- 满足条件表达式,就执行语句1
- 否则执行语句2
(三)案例
1、输入一个数,判断它是奇数还是偶数。
public static void main(String[] args) { //输入一个数 Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); int num = scanner.nextInt(); // 判断它是奇数还是偶数 if (num % 2 == 0) { System.out.println("是偶数"); } else { System.out.println("是奇数"); } }
|
2、用户输入两个数a、b。如果a能被b整除或a加b大于1000,则输出a;否则输出b
import java.util.Scanner; public class T052用户输入两个数 { public static void main(String[] args) { //用户输入两个数a、b。 Scanner scanner = new Scanner(System.in); System.out.println("请输入整数a:"); int a = scanner.nextInt(); System.out.println("请输入整数b:"); int b = scanner.nextInt(); // 如果a能被b整除或a加b大于1000,则输出a;否则输出b if (a%b==0 || a+b>1000){ System.out.println("a="+a); }else { System.out.println("b = " + b); } } }
|
请输入整数a: 1000 请输入整数b: 500 a=1000 |
八、多分支if
(一)语法
if(条件表达式1){
执行语句1;
}else if(条件表达式2){
执行语句2;
} ……
else if(条件表达式n){
执行语句n;
}
else{
执行其他语句
}
(二)说明
- 满足条件表达式1,就执行语句1
- 否则满足条件表达式2,就执行语句2
- ...
- 否则满足条件表达式n,就执行语句n
- 否则执行其他语句
(三)案例
岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果成绩为100分时,奖励一台华为Mete40 pro;
如果成绩为(80,99]时,奖励一台iPad;
如果当成绩为[60,80]时,奖励一个 switch;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断
思路:
- 输入java成绩,赋值给变量
- 判断变量==100 奖励一台华为Mete40 pro
- else if判断
import java.util.Scanner; public class T06岳不群案例 { public static void main(String[] args) { //1.输入java成绩,赋值给变量 Scanner scanner = new Scanner(System.in); System.out.println("输入java成绩:"); int java = scanner.nextInt(); //2.判断变量==100 奖励一台华为Mete40 pro if (java==100){ System.out.println("奖励一台华为Mete40 pro"); } //3.else if判断 // 如果成绩为(80,99]时,奖励一台iPad; else if (java>80 && java<=99){ System.out.println("奖励一台iPad"); } //如果当成绩为[60,80]时,奖励一个 switch; else if (java>=60 && java<=80){ System.out.println("奖励一个switch"); } //其它时,什么奖励也没有。 else{ System.out.println("什么奖励也没有"); } } }
|
输入java成绩: 81 奖励一台iPad |
九、三元运算符
(一)语法
判断条件 ? 表达式1 : 表达式2
(二)说明
- 判断条件为true,返回表达式1
- 否则返回表达式2
- 一般用于赋值
(三)案例
求2个数的最大值
import java.util.Scanner; public class T07三元运算符 { public static void main(String[] args) { //求2个数的最大值 Scanner scanner = new Scanner(System.in); System.out.println("请输入整数a:"); int a = scanner.nextInt(); System.out.println("请输入整数b:"); int b = scanner.nextInt(); int max=a>b?a:b; System.out.println("最大值是:"+max); } }
|
请输入整数a: 20 请输入整数b: 10 最大值是:20 |
十、if嵌套
(一)语法
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
(二)说明
if里面嵌套if
(三)案例
需求说明:
普通顾客购物满100元打9折;会员购物打8折;会员购物满200元打7.5折
实现思路:
1、外层判断是否是会员
2、内层判断是否达到相应打折要求
import java.util.Scanner; public class T08if嵌套 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入是否是会员(0-是,1-否):"); int vip = scanner.nextInt(); System.out.println("请输入购物金额:"); double money = scanner.nextDouble(); //1、外层判断是否是会员 if (vip==0) {//会员 //2、内层判断是否达到相应打折要求 if (money<200){//不打折 //打8折 System.out.println("实际支付:"+(money*0.8)); } else {//>200 //打7.5折 System.out.println("实际支付:"+(money*0.75)); } }else {//不是会员 if (money<100) { //原价输出 System.out.println("实际支付:" + money); }else{ //打9折 System.out.println("实际支付:" + (money*0.9)); } } } }
|
请输入是否是会员(0-是,1-否): 0 请输入购物金额: 220 实际支付:165.0
|
十一、switch语句
(一)语法
switch(表达式) {
case 常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
break;
......
case常量表达式n :
语句n;
break;
default:
语句n+1;
break;
}
(二)说明
表达式是具体的值,不能是范围。
表达式的值只可以接受int、byte、short、char(以及int、byte、short、char对应的包装器类型)、枚举,String,不接受其他类型的值。
不允许有重复的case取值
switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置并开始顺序执行以后所有的程序代码,不管后面的case条件是否匹配,直到碰到break语句为止。
default块放在末尾,也可以省略。如果没有找到匹配的值就会执行此语句块(相当于if语句中的else)。
(三)案例
switch case实现:
小明期末考试,输入分数,如果成绩在90分及以上,等级为A
否则如果在80分及其以上,等级为B
否则如果在60分及其以上,等级为C
否则等级为D
输出等级
import java.util.Scanner; public class T09switch { public static void main(String[] args) { //输入分数 Scanner scanner = new Scanner(System.in); System.out.println("请输入小明的分数:"); int score = scanner.nextInt(); //switch switch (score/10){ case 10: case 9: System.out.println("A"); break; case 8: System.out.println("B"); break; case 6: case 7: System.out.println("C"); break; default: System.out.println("D"); break; } } }
|
请输入小明的分数: 1 D |
十二、总结
1.语句 用分号结束的命令 2.代码块 用大括号{}包起来 的语句 3.变量: 存储单元存放值,可以改变值 4.常量: 不变的量,赋值以后不能改变 5.变量作用域 1)全局作用域 在整个类中都有效,类的作用范围叫做全局作用域 2)局部作用域 代码块{}包起来的范围叫做局部作用域,在这对大括号里{}有效 1.方法体{} 2.for{} 3.if{} 4.else{} 5.else if{} 6.while{} 7.do{} while() 8.{}初始化代码块 7.全局变量 类声明的变量,也叫类的成员变量,在整个类中都有效,包括类的方法也能使用类的成员变量,类的成员变量叫做全局变量 8.局部变量 代码块{}里声明变量,叫做局部变量 1)方法体声明的变量 2)方法的形参 3)for{}大括号里声明变量 3.if{}大括号里声明变量 4.else{}大括号里声明变量 5.else if{}大括号里声明变量 6.while{}大括号里声明变量 7.do{} while()大括号里声明变量 8.{}初始化代码块 大括号里声明变量 9.代码执行顺序 1)顺序结构 从上到下依次顺序执行 2)选择分支结构 3)循环结构 10.选择分支结构 1)单分支 if(条件表达式){ 语句; } 2)双分支 if(条件表达式){ 语句1; }else{ 语句2; } 3)多分支 if(条件表达式){ 语句1; } else if(条件表达式){ 语句2; } else if(条件表达式){ 语句3; } ... else{ 语句n; } 11.三元运算符 条件表达式?表达式1:表达式2 一般用于赋值语句 int a=m>n?m:n; 12.if嵌套 在if或else if或else代码块的{}里嵌入if if(条件表达式){ if(条件表达式){ 语句1; } else{ 语句2; } }else{ if(条件表达式){ 语句1; } else{ 语句2; } } 13.switch switch(表达式) { case 常量表达式1: 语句1; break; case常量表达式2: 语句2; break; ...... case常量表达式n : 语句n; break; default: 语句n+1; break; } 表达式类型:byte short char int String enum
十三、循环
Java语言中的有三种循环语句,分别是for、while、do while;
(一)for循环
语法:
for(初始化语句;判断条件语句;控制语句(步长的增加或减少)){
循环体语句块;
}
一般用在有循环次数的情况下.
for循环基本结构如下所示:
思考:for(;;){} 这样的语句会编译通过吗?如果通过,是个什么样的循环?
能通过,是一个无限循环
public class Test07{ public static void main(String[] args){ for(;;){ System.out.println("hello...");//在控制台不断的输出hello... 我们可以按ctrl+c中断 程序的执行 } } } |
(二)while循环
while循环基本结构如下所示:
while(判断条件语句){
循环体语句块;
控制语句;
}
(三)do while循环
do while循环基本结构如下所示
(四)while循环和do while循环有什么区别
while以及do while区别
while先进行条件判断,再去执行循环体,如果条件为假,while循环体一次都不会执行
do-while先执行循环体再去进行判断,如果条件为假,do-while至少执行一次
结论:while循环可以能循环0次,而do while循环最少执行1次。
public class Test06{ public static void main(String[] args){ /* int i=5; do{ System.out.println(i);//输出5 至少执行一次 i++; }while(i<5); */ int i=5; while(i<5){//啥都不输出 不符合条件执行0次 System.out.println(i); i++; } } } |
练习题
利用while或者do-while循环 求1~100的和
//while public class Test08{ public static void main(String[] args){ int a=1; int sum=0; while(a<=100){ sum+=a; a++; } System.out.println(sum); } } //do while public class Test08{ public static void main(String[] args){ int a=1; int sum=0; do{ sum+=a; a++; }while(a<=100); System.out.println(sum); } } |
(五)循环嵌套使用
循环嵌套使用
for(int i=0;i<3;i++) { for(int j=5;j>0;j--) { System.out.println("内层循环i="+i+" j="+j); } System.out.println("外层循环"); } System.out.println("所有循环结束");
|
(六)continue语句
在循环控制语句的循环体中,可以使用continue语句,表示不再继续循环体后面的代码,继续下一次循环;
下列代码打印输出0-4中的所有奇数
for(int i=0;i<5;i++) { //判断i是偶数 if(i%2==0) { //如果i是偶数,则继续下一次循环 continue; } System.out.println("i="+i); } |
在多重循环时,continue默认是继续当前的循环
for(int i=0;i<5;i++){ for(int j=0;j<6;j++){ //当i==j时,继续j循环 if(i==j){ continue; } System.out.println("i="+i+" j="+j); } System.out.println("结束i循环的第"+i+”次循环”); } System.out.println("循环结束"); |
可以在for、while、do前用合法标识符加标号;
用continue 标号;语句继续指定的循环;
外层循continue loop1;语句继续loop1标记的循环,即外层循环;
loop1: for(int i=0;i<5;i++) { loop2: for(int j=0;j<6;j++ { //当i==j时,继续i循环 if(i==j) { continue loop1; } System.out.println("i="+i+" j="+j); } System.out.println("外层循环"); } System.out.println("结束循环"); |
(七)break语句
在循环控制语句的循环体中,可以使用break语句,表示终止当前循环,跳出循环体
下列代码打印输出0-4中的第一个偶数
for(int i=0;i<5;i++) { //判断i是偶数 if(i%2!=0) { //如果i不是偶数,则终止循环 break; } //输出i的值 System.out.println("i="+i); }
|
在多重循环时,break默认是终止当前的循环
for(int i=0;i<5;i++) { for(int j=0;j<6;j++) { //当i==j时,终止j循环 if(i==j) { break; } System.out.println("i="+i+" j="+j); } System.out.println("结束i循环的第"+i+"次循环"); } System.out.println("结束i循环"); |
可以在for、while、do前用合法标识符加标号;
用break标号;语句终止指定的循环;
break loop1;语句终止loop1标记的循环,即i层循环;
loop1: for(int i=0;i<5;i++) {
loop2: for(int j=0;j<6;j++) { //当i==j时,终止i循环 if(i==j){ break loop1; } System.out.println("i="+i+" j="+j); } System.out.println("结束i循环的第"+i+"次循环"); } System.out.println("结束i循环");
|
break(跳出) : 立即跳出当前循环,执行循环之后的第一条语句;
continue(继续):应用于循环结构,停止当前循环,如果循环条件满足,开始下一轮的循环; (换句话说:该循环的这次循环需要停止,但整个循环不停止。)
十四、总结
1.语
用分号结束的命令
2.代码块
用大括号{}包起来 的语句
3.变量:
存储单元存放值,可以改变值
4.常量:
不变的量,赋值以后不能改变
5.变量作用域
1)全局作用域
在整个类中都有效,类的作用范围叫做全局作用域
2)局部作用域
代码块{}包起来的范围叫做局部作用域,在这对大括号里{}有效
1.方法体{}
2.for{}
3.if{}
4.else{}
5.else if{}
6.while{}
7.do{} while()
8.{}初始化代码块
7.全局变量
类声明的变量,也叫类的成员变量,在整个类中都有效,包括类的方法也能使用类的成员变量,类的成员变量叫做全局变量
8.局部变量
代码块{}里声明变量,叫做局部变量
1)方法体声明的变量
2)方法的形参
3)for{}大括号里声明变量
3.if{}大括号里声明变量
4.else{}大括号里声明变量
5.else
if{}大括号里声明变量
6.while{}大括号里声明变量
7.do{}
while()大括号里声明变量
8.{}初始化代码块 大括号里声明变量
9.代码执行顺序
1)顺序结构 从上到下依次顺序执行
2)选择分支结构
3)循环结构
10.选择分支结构
1)单分支
if(条件表达式){
语句;
}
2)双分支
if(条件表达式){
语句1;
}else{
语句2;
}
3)多分支
if(条件表达式){
语句1;
}
else if(条件表达式){
语句2;
}
else if(条件表达式){
语句3;
}
...
else{
语句n;
}
11.三元运算符
条件表达式?表达式1:表达式2 一般用于赋值语句
int
a=m>n?m:n;
12.if嵌套
在if或else if或else代码块的{}里嵌入if
if(条件表达式){
if(条件表达式){
语句1;
}
else{
语句2;
}
}else{
if(条件表达式){
语句1;
}
else{
语句2;
}
}
13.switch
switch(表达式) {
case 常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
break;
......
case常量表达式n :
语句n;
break;
default:
语句n+1;
break;
}
表达式类型:byte short char int String enum
这篇关于流程控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略