Java 控制流程
控制流程
- 顺序结构
- 分支结构
- 循环结构
分支结构-if语句
形式
形式一
if (condition){
statements
}
- condition值为true时执行statements
- 即使statements只有一句,也需要加花括号
形式二
if (condition){
statementsA
}else{
statementsB
}
- condition值为true时执行statementsA
- condition值为false时执行statementsB
形式三
if (condition1){
statementsA
}else if (condition2){
statementsB
}
- condition1值为true时执行statementsA
- condition1值为false 且 condition2值为true时执行statementsB
形式四
if (condition1){
statementsA
}else if (condition2){
statementsB
}else{
statementsC
}
- condition1值为true时执行statementsA
- condition1值为false 且 condition2值为true时执行statementsB
- condition1值为false 且 condition2值为false时执行statementsC
例子
结果输出为3
如果x为10,输出结果为Test 1
x>9 处永远为False
注意事项
- 注意代码风格(缩进,花括号,对齐方式)
- 注意变量的作用域
成对的花括号是一个作用域,在其内能访问父作用域的变量
同级的作用域不能访问对方的局部变量
eg.
int x = 12;
if (x > 4){
int y = 30;
} else if (x > 9){
System.out.print(y);//此处y无法找到,报错
}
分支结构 - switch语句
switch(表达式){
case 常量1:
代码块A;
break;
case 常量2:
代码块B;
break;
...
default:
代码块x;
break
}
- 从第一个匹配表达式值的case处开始执行代码块,直到遇到break语句或switch结束
示例
结果为March一直输出到December!
建议:
case ___:
statement;
break;
使用break以控制switch语句退出
default是所有情况都未命中时执行的语句
Switch 与string
常见笔试/面试题
- JDK1.7:switch接受String类型的表达式
- 在此之前,只接受byte,short,char,int,不接受long型
- 还接受枚举值
循环结构 - while语句
while (逻辑表达式){
语句;
...;
}
- 执行过程:先判断逻辑表达式的值。若==True,则执行代码块中的语句,然后再次判断条件并重复,直到条件不成立为止。
循环退出方式:
①语句块需影响表达式的值,否则可能为死循环
②break语句
示例见Case14
循环结构的设计经验
编写循环时应该考虑如下三个步骤:
- 确定要重复的语句(考虑是否真的有必要重复,没必要则放到循环外)
- 将这些语句放在一个循环中
- 为循环继续条件编码,并为控制循环添加合适的语句(何时终止循环)
此外还需精心设计变量
循环结构:do-while语句
do{
语句; ... ;
} while(逻辑表达式);
与while的区别:语句至少执行一次
在Case16中,输入0的值时返回值为空,如何解决?
修改方式:使用do…while…
import java.util.Scanner;
public class Case16 {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.print("请输入需要转换的数:");
int number = kb.nextInt();
int shang = number;//商
int yu;//余
String hex = "";
do{
yu = shang % 16;
shang = shang / 16;
char result;
if (yu > 9){
result = (char)('A' + (yu - 10));
}else{
result = (char)('0' + (yu - 0));
}
hex = result + hex;
}while (shang != 0);
System.out.println(number + " 的 16 进制数为:" + hex);
}
}
for语句
for(初始化语句①;继续循环布尔表达式②;循环后动作③){
//循环体④
Statement(s);
}
执行过程:①→②→④→③→②→④→③→…→②→④→③→②→False→退出循环
for(int i = 0; i < 100; i++){
System.out.println("welcome to Java")// 打印出100行welcome to Java(0 ~ 99)
}
- 一般情况下,for循环使用一个变量来控制循环体的执行次数,以及什么时候循环终止
- 这个变量称之为控制变量。初始化动作是指初始化控制变量,每次迭代后的动作通常会对控制变量做自增或自减,而循环继续条件检验控制变量是否达到终止值
输出10个*符号
for(int i = 0; i < 10; i++){
System.out.print("*");
}
无限循环
如果省略for循环中的循环继续条件,则隐含的认为循环继续条件为true
int i = 0;
while (i < 10){
System.out.print("*");
i++;
}
采用哪种循环?
- 通常,如果已经提前知道重复的次数,就采用for循环,例如需要打印某信息100次
- 如果无法确定重复次数,就采用while循环,例如重复直到读入为0时停止
- 如果在检验前需要执行循环体,则使用 do-while 循环