一、流程控制简介
1996年,计算机科学家Bohm和Jacopini证明了:任何简单或复杂的算法都可以由顺序结构、分支结构 和循环结构这三种基本结构组合而成。它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。
在 Java 中,流程控制主要通过条件语句(if、else if、else)、循环语句(for、while、do-while)、以及跳转语句(break、continue、return)来实现。
二、流程控制分类
2.1顺序控制
顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作。程序由上向下执行。

示例
public class Test{
int num1 = 12;
int num2 = num1 + 2;
}//java中定义成员变量时采用合法的向前引用。
2.2分支控制(if,else,switch)
分支结构又被称为选择结构,根据条件成立与否来执行操作。
2.2.1单分支(if)

示例

package com;
import java.util.Scanner;
public class If01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄");
int age=scanner.nextInt();
if(age>18){
System.out.println("你年龄大于18,要为自己的行为负责");
}
System.out.println("程序继续》》》");
}
}
2.2.2双分支(if-else)

示例

2.2.3多分支

示例

package com;
import java.util.Scanner;
public class If02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入信用分");
int score = scanner.nextInt();
//先对信用分判断,1-100
if(score>=1&&score<=100) {
if (score == 100) {
System.out.println("信用极好");
} else if (score > 80 && score <= 99) {
System.out.println("信用优秀");
} else if (score >= 60 && score <= 80) {
System.out.println("信用一般");
} else {
System.out.println("信用不及格");
}
}else {
System.out.println("输入分数有误,请重新输入");
}
}
}
2.2.4switch
switch 语句是一种多分支的流程控制语句,用于根据表达式的值选择性地执行不同的代码块
switch 语句的基本结构如下:
switch (expression) {
case value1:
// 当 expression 等于 value1 时执行的代码块
break;
case value2:
// 当 expression 等于 value2 时执行的代码块
break;
// 可以有更多的 case 分支
default:
// 当 expression 与所有 case 值都不匹配时执行的代码块
}
switch 语句的各个部分:
-
表达式:在 switch 后面的括号中指定一个表达式,其值会与各个 case 的值进行比较。
-
case 分支:每个 case 关键字后面跟着一个常量值(value1、value2 等),表示此分支的条件。如果表达式的值等于某个 case 的值,则执行该 case 分支中的代码块。
-
代码块:每个 case 分支中的代码块定义了当表达式的值与相应的 case 值匹配时要执行的操作。
-
break 语句:每个 case 分支末尾通常使用 break 语句来结束当前分支的执行,并跳出 switch 语句。如果忽略 break,程序会继续执行下一个 case 中的代码块,直到遇到 break 或 switch 语句结束。
-
default 分支:如果表达式的值与所有 case 的值都不匹配,则会执行 default 分支中的代码块。default 是可选的,可以在 switch 语句中省略。
-
注意事项:在 case 中只能放置常量表达式(如整数、字符或枚举常量),不能是变量或其他复杂表达式。case 中的值必须是唯一的,不允许重复。
1.switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
2.break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
示例
public class SwitchExample {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("未知日期");
}
}
}
public class SwitchTest {
public static void main(String args[]) {
int i = 1;
switch (i) {
case 0:
System.out.println("one");
break;
case 1:
System.out.println("two");
break;
default:
System.out.println("other");
break;
}
}
}


package com;
import java.util.Scanner;
public class Switch01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g)");
char c1 = scanner.next().charAt(0);
switch (c1){
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;
default:
System.out.println("其它都是星期天");
}
}
}
2.2.5switch和if的选择

2.3循环控制(for,while,dowhile,多重循环)
2.3.1for循环
for 循环是一种常用的循环结构,用于重复执行特定的代码块直到指定的条件不再满足为止。
for 循环的基本结构如下:
for (initialization; condition; update) {
// 循环体:要重复执行的代码块
}
上述结构各部分的解释:
-
初始化表达式(initialization):在进入循环之前进行一次性的初始化操作,通常用于声明计数器变量或初始化循环需要的变量。
-
循环条件(condition):每次循环迭代开始前都会检查该条件。只有当条件为 true 时,循环体内的代码才会被执行;当条件为 false 时,循环将终止。
-
更新表达式(update):在每次循环迭代结束后执行的操作,通常用于更新计数器变量或修改循环需要的变量,以便控制循环何时结束。
-
循环体:由花括号包裹的代码块,其中包含了需要重复执行的代码。
示例
public class ForLoopExample {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
}
}
循环的初始化表达式将变量 i
初始化为 1,循环条件为 i <= 5
,表示只要 i
的值不超过 5,循环就会继续执行。在每次循环迭代结束后,更新表达式 i++
将 i
的值增加 1。
当程序运行时,for 循环将会依次打印出数字 1、2、3、4、5。
public class ForLoop {
public static void main(String args[]) {
int result = 0;
for (int i = 1; i <= 100; i++) {//1.初始化部分 2.循环条件部分 3.迭代部分
result += i;//循环体部分
}
System.out.println("result=" + result);
}
}

2.3.2while循环
while 循环是一种常用的循环结构,它会重复执行某个代码块,直到指定的条件为假为止。
while 循环的基本结构如下:
while (condition) {
// 循环体:要重复执行的代码块
}
以下是对上述结构各部分的解释:
-
循环条件(condition):在每次循环迭代开始前都会检查该条件。只有当条件为真时,循环体内的代码才会被执行;当条件为假时,循环将终止。
-
循环体:由花括号包裹的代码块,其中包含了需要重复执行的代码。
示例
public class WhileLoop {
public static void main(String args[]) {
int result = 0;
int i = 1;//1.初始化部分
while (i <= 100) {//循环条件
result += i;//循环体部分
i++;//迭代部分
}
System.out.println("result=" + result);
}
}

package com;
public class While01 {
public static void main(String[] args) {
int i=1;
while (i<11){
System.out.println("你好"+i);
i++;
}
System.out.println("退出循环");
}
}
2.3.3do-while
do-while 循环是一种循环结构,它先执行一次循环体中的代码,然后检查循环条件,只有在条件为真时才会继续执行下一次循环。
do-while 循环的基本结构如下:
do {
// 循环体:要重复执行的代码块
} while (condition);
以下是对上述结构各部分的解释:
-
循环体:由花括号包裹的代码块,其中包含了需要重复执行的代码。
-
循环条件(condition):在每次循环迭代结束后检查该条件。只有当条件为真时,循环将继续执行;当条件为假时,循环终止。
注意:while与do…while的区别
-
while: 先判断 再执行 条件不成立 循环体 一遍都不执行
-
do…while: 先执行 再判断 条件不成立 循环体 至少执行一遍
示例
public class DoWhileLoop {
public static void main(String args[]) {
int result = 0, i = 1;//初始化部分
do {
result += i;//循环体部分
i++;//迭代部分
} while (i <= 100);//循环条件部分
System.out.println("result=" + result);
}
}

2.4特殊关键字
2.4.1break
break语句用于终止某个语句块的执行
跳出循环
public class BreakTest{
public static void main(String args[]){
for(int i = 0; i<10; i++){
if(i==3)
break;//当条件成立时,终止for循环
System.out.println(" i =" + i);
}
System.out.println("Game Over!");
}
}
2.4.2continue
continue只能使用在循环结构中
continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
public class ContinueTest {
public static void main(String args[]){
for (int i = 0; i < 100; i++) {
if (i%10==0)
continue;//跳出成立的循环
System.out.println(i);
}
}
}
2.4.3return
return 语句用于从方法中返回值,并终止该方法的执行。
1.return:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。
2.与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内
public class ReturnExample {
public static void main(String[] args) {
int num1 = 5;
int num2 = 3;
int sum = calculateSum(num1, num2);
System.out.println("The sum of " + num1 + " and " + num2 + " is: " + sum);
}
public static int calculateSum(int a, int b) {
int sum = a + b;
return sum; // 返回 a 和 b 的和
}
}
在上面的示例中,定义了一个 calculateSum()
方法,接受两个整数参数 a
和 b
,并返回它们的和。在方法中,我们计算了 a
和 b
的和,并通过 return
语句返回这个和。
在 main
方法中,调用 calculateSum()
方法,并将返回的结果赋值给 sum
变量。最后,我们打印出这两个整数的和。
请注意,一旦 return
语句被执行,方法将立即返回,并且任何位于 ==return==
==后面的代码将不会
原文始发于微信公众号(技海拾贝):Java学习三—流程控制
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/295430.html