Java 控制流程

本文详细解读了Java中的分支结构(if语句的形式一至四),包括注意事项;介绍了switch语句的用法,以及while、do-while和for循环的设计技巧。讨论了选择不同循环类型的最佳实践,如for循环用于已知次数,while用于未知次数。涵盖了循环结构中变量管理和控制逻辑的要点。
摘要由CSDN通过智能技术生成

控制流程

  • 顺序结构
  • 分支结构
  • 循环结构

分支结构-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

例子

if语句示例1(来自蓝桥杯《硬核程序基础》课程)
结果输出为3
if语句示例2(来自蓝桥杯《硬核程序基础》课程)
如果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结束

示例

switch语句示例(来自蓝桥杯《硬核程序基础》课程)
结果为March一直输出到December!
建议:

case ___:
	statement;
	break;

使用break以控制switch语句退出
default是所有情况都未命中时执行的语句

Switch 与string

常见笔试/面试题

  • JDK1.7:switch接受String类型的表达式
  • 在此之前,只接受byte,short,char,int,不接受long型
  • 还接受枚举值

循环结构 - while语句

while (逻辑表达式){
	语句;
	...;
}
  • 执行过程:先判断逻辑表达式的值。若==True,则执行代码块中的语句,然后再次判断条件并重复,直到条件不成立为止。
    while语句逻辑表达式(来自蓝桥杯《硬核程序基础》课程)
    循环退出方式:
    ①语句块需影响表达式的值,否则可能为死循环
    ②break语句
    示例见Case14

循环结构的设计经验

编写循环时应该考虑如下三个步骤:

  • 确定要重复的语句(考虑是否真的有必要重复,没必要则放到循环外)
  • 将这些语句放在一个循环中
  • 为循环继续条件编码,并为控制循环添加合适的语句(何时终止循环)

此外还需精心设计变量

循环结构:do-while语句

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
无限循环的等价转换(来自蓝桥杯《硬核程序基础》课程)
while,do-while 和 for 的等价转换(来自蓝桥杯《硬核程序基础》课程)

int i = 0;
while (i < 10){
	System.out.print("*");
	i++;
}

采用哪种循环?

  • 通常,如果已经提前知道重复的次数,就采用for循环,例如需要打印某信息100次
  • 如果无法确定重复次数,就采用while循环,例如重复直到读入为0时停止
  • 如果在检验前需要执行循环体,则使用 do-while 循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值