【JavaSE】逻辑控制语句

一. 顺序结构

顺序结构比较简单,即程序按照代码书写的顺序一行一行执行下去。

如果调整代码的书写顺序,则执行顺序也发生变化:

在这里插入图片描述

二. 分支结构

1. if 语句

if 语句的基本语法形式包括以下三种:

在这里插入图片描述

代码示例

1、判定一个数字是奇数还是偶数

public static void main(String[] args) {
    int num = 13;
    if (num % 2 == 0) {
        System.out.println("偶数");
    } else {
        System.out.println("奇数");
    }
}

2、判定一个整数是正数还是负数

public static void main(String[] args) {
    int num = -10;
    if (num > 0) {
        System.out.println("num 是正数");
    } else if (num < 0) {
        System.out.println("num 是负数");
    } else {
        System.out.println("num 是0");
    }
}

3、判定某一年份是否是闰年

public static void main(String[] args) {
    int year = 2023;
    if (year%4 == 0 && year%100 != 0 || year%400 == 0) {
        System.out.println("是闰年");
    } else {
        System.out.println("不是闰年");
    }
}

注意事项

1、悬垂 else 问题

  • if / else 语句中可以不加花括号,此时只能匹配一条语句
    在这里插入图片描述
  • 不加花括号时 else 总是和最近的 if 匹配
    在这里插入图片描述

2、代码风格问题
在这里插入图片描述

3、分号问题

此处多写了一个分号,导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块,此时不论 if 成立于否 { } 代码块里的代码都会执行:

int x = 20;
if (x == 10); {
	System.out.println("hehe");
}
// 运行结果
hehe

2. switch 语句

语法格式如下:

switch(整数|枚举|字符|字符串) {
	case 内容1: {
		内容满足时执行语句;
		[break;]
		}
	case 内容2: {
		内容满足时执行语句;
		[break;]
		}
	...
	default: {
		内容都不满足时执行语句;
		[break;]
		}
}

几点说明

  • 根据 switch 中值的不同,会执行对应的 case 语句。遇到 break 就会结束该 switch 语句。
  • 如果 switch 中的值没有匹配的 case,就会执行 default 中的语句。
  • 建议一个 switch 语句最好都要带上 default
  • 注意 long、float、double 和 boolean 这几个基本类型的值不能做 switch 的参数。

代码示例

根据 day 的值输出星期几

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("输入有误");
        break;
    }
}

3、循环结构

3.1 while 循环

循环条件为 true,则执行循环语句,否则结束循环。语法格式如下:

while(布尔表达式){
	循环语句;
}

注意事项

  • 和 if 类似,while 下面的语句可以不写 { } ,但是不写的时候只能匹配一条语句。建议还是加上 { }
  • 和 if 类似,while 后面的 { 建议和 while 写在同一行

代码示例

1、打印 1 - 10 的数字

int num = 1;
while(num <= 10){
     System.out.println(num++);
}

2、计算 1 - 100 的和

int num = 1;
int sum = 0;
while(num <= 100){
    sum += num;
    num += 1;
}
System.out.println(sum);

3、计算 5 的阶乘

int num = 1;
int ret = 1;
while(num <= 5){
    ret *= num;
    num += 1;
}
System.out.println(ret);

4、计算 1! + 2! + 3! + 4! + 5!

int num = 1;
int sum = 0;
// 外层循环求阶乘的和
while(num <= 5){
    // 那内层循环求每一个数的阶乘
    int tmp = 1;
    int fac = 1;
    while(tmp <= num){
        fac *= tmp;
        tmp += 1;
    }
    sum += fac;
    num += 1;
}
// 最后输出结果
System.out.println(sum);

3.2 do while 循环

语法格式如下,注意最后 while 后面要加个分号

do{
	循环语句;
}while(循环条件);

do while 不论条件成立与否,必定先执行一次循环语句,再判定循环条件:

在这里插入图片描述

3.3 for 循环

语法格式如下:

for(初始语句; 循环条件; 更新语句) {
	循环体;
}

相比于 while 循环,for 循环将初始语句、循环条件 和 更新语句合并在一起,这样写代码时不容易遗漏。

注意事项

  • 和 if 类似,for 下面的语句可以不写 { } ,但是不写的时候只能支持一条语句。建议还是加上 { }。
  • 和 if 类似,for 后面的 { 建议和 while 写在同一行。
  • 建议有确定的循环次数时用 for;必须先执行一次循环体时用 do while;其他情况用 while。

代码示例

1、打印 1 - 10 的数字

for(int i = 0; i <= 10; ++i) {
    System.out.println(i);
}

2、计算 1 - 100 的和

int sum = 0;
for(int i = 0; i <= 100; ++i) {
    sum += i;
}
System.out.println(sum);

3、计算 5 的阶乘

int ret = 1;
for(int i = 1; i <= 5; ++i){
    ret *= i;
}
System.out.println(ret);

4、计算 1! + 2! + 3! + 4! + 5!

int sum = 0;
for(int i = 1; i <= 5; ++i){
    int fac = 1;
    for(int j = 1; j <= i; ++j){
        fac *= j;
    }
    sum += fac;
}
System.out.println(sum);

3.4 break 和 continue

break:执行此语句时,退出匹配最近的循环。

continue:执行此语句时,会立刻进入下次循环(判定循环条件)。

注意:break 和 continue 都必须用在循环中【特殊:beak 还可以用在 switch 中】,二者不适用于 if 语句。

三. 输入输出

1. 输出到控制台

Java 中常用输出语句有以下三种形式:

System.out.print(msg);  // 输出一个字符串, 不带换行
System.out.println(msg);// 输出一个字符串, 带换行
System.out.printf(format, msg);// 格式化输出

说明:

  • println 输出的内容自带 \n,print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的

2. 从键盘输入

我们在做 OJ 时经常要用到从键盘输入 n 组数据,模板大致如下:

在这里插入图片描述

注意事项

  • 使用 Scanner 需要导入 util 包
  • 当循环输入多个数据的时候,使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z,Linux / Mac 上使用 ctrl +d)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值