javaSE - 逻辑控制和输入输出(复习)

一、顺序结构

顺序结构比较简单. 像我们之前写过的代码就是顺序结构的, 按照代码书写的顺序一行一行执行

public static void main(String[] args) {
        System.out.println("hello");
        System.out.println("haha");
        System.out.println(1200);
    }

在这里插入图片描述

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

public static void main(String[] args) {
        System.out.println(1200);
        System.out.println("hello");
        System.out.println("haha");
    }

在这里插入图片描述

二、分支结构

2.1、if语句

	基本语法形式1
	if(布尔表达式){
	//条件满足时执行代码
	}
	
	基本语法形式2
	if(布尔表达式){
	//条件满足时执行代码
	}else{
	//条件不满足时执行代码
	}
 
 	基本语法形式3 多分支的情况
 	if(布尔表达式){
	//条件满足时执行代码
	}else if(布尔表达式){
	//条件满足时执行代码
	}else{
	//条件都不满足时执行代码
	}

代码示例1: 判定一个数字是奇数还是偶数

public static void main(String[] args) {
        //判定一个数字是奇数还是偶数
        int a = 10;
        if(a % 2 == 0){
            System.out.println("是偶数");
        }else{
            System.out.println("是奇数");
        }
    }

在这里插入图片描述

代码示例2: 判定一个数字是正数还是负数

public static void main(String[] args) {
        //代码示例2: 判定一个数字是正数还是负数
        int a = 10;
        if(a > 0){
            System.out.println("a 是正数");
        }else{
            System.out.println("a 是负数");
        }
    }

在这里插入图片描述

代码示例3: 判定某一年份是否是闰年

能被4整除却不能被100整除或能被400整除的年份就是闰年!

public static void main(String[] args) {
        /**
         * 判定某一年份是否是闰年
         * 能被4整除却不能被100整除或能被400整除的年份就是闰年!
          */
        int year = 100;
        if((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)){
            System.out.println(year + "是润年");
        }else{
            System.out.println(year + "不是闰年");
        }
    }

在这里插入图片描述

注意事项 悬垂 else 问题

if / else 语句中可以不加 大括号 ,但是也可以写语句(只能写一条语句).,此时 else 是和最接近的 if 匹配.
但是实际开发中我们 不建议 这么写. 最好加上大括号

public static void main(String[] args) {
        if(true)
            System.out.println("haha");
            if(true)
                System.out.println(100);
                else
                System.out.println("hello");
    }

在这里插入图片描述

2.2、switch 语句

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

代码示例: 根据 day 的值输出星期

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int day = scanner.nextInt();
        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;
        }
    }

根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句.
如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.
我们建议一个 switch 语句最好都要带上 default

注意事项1 break 不要遗漏, 否则会失去 “多分支选择” 的效果
public static void main(String[] args) {
        int day = 1;
        switch(day){
            case 1:
                System.out.println("星期一");
            case 2:
                System.out.println("星期二");
            case 3:
                System.out.println("星期三");
            case 4:
                System.out.println("星期四");
            case 5:
                System.out.println("星期五");
            case 6:
                System.out.println("星期六");
            case 7:
                System.out.println("星期日");
            default :
                System.out.println("输入错误!");
                break;
        }
    }

在这里插入图片描述
我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果

注意事项2 switch 中的值只能是 整数|枚举|字符|字符串

在这里插入图片描述

三、循环结构

3.1、while 循环

基本语法格式:

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

循环条件为 true, 则执行循环语句; 否则结束循环

代码示例1: 打印 1 - 10 的数字

public static void main(String[] args) {
        //代码示例1: 打印 1 - 10 的数字
        int a = 1;
        while(a <= 10){
            System.out.println(a);
            a++;
        }
    }

在这里插入图片描述

代码示例2: 计算 1 - 100 的和

public static void main(String[] args) {
        //代码示例2: 计算 1 - 100 的和
        int a = 0;
        int sum = 0;
        while(a <= 100){
            sum = sum + a;
            a++;
        }
        System.out.println(sum);
    }

在这里插入图片描述

代码示例3: 计算 5 的阶乘

public static void main(String[] args) {
        //代码示例3: 计算 5 的阶乘
        int a = 1;
        int ret = 1;
        while(a <= 5){
            ret = ret * a;
            a++;
        }
        System.out.println(ret);
    }

在这里插入图片描述

代码示例4: 计算 1! + 2! + 3! + 4! + 5!

public static void main(String[] args) {
        //代码示例4: 计算 1! + 2! + 3! + 4! + 5!
        //1!=1; 2!=2; 3!=6; 4!=24; 5!=120
        int a = 1;
        int ret = 1;
        int sum = 0;
        while(a <= 5){
            ret = ret * a;
            a++;
            sum = sum + ret;
        }
        System.out.println(sum);
    }

在这里插入图片描述

注意事项

  1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
  2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.

while语句中的break

break 的功能是让循环提前结束,结束循环

代码示例: 找到 100 - 200 中第一个 3 的倍数
public static void main(String[] args) {
        //代码示例: 找到 100 - 200 中第一个 3 的倍数
        int a = 100;
        while(a <= 200){
            if(a % 3 == 0){
                System.out.println(a + "是100-200之间第一个3的倍数");
                break;
            }
            a++;
        }
    }

在这里插入图片描述
执行到 break 就会让循环结束

while 中的continue语句

continue 的功能是跳过这次循环, 立即进入下次循环

代码示例: 找到 100 - 200 中所有 3 的倍数
public static void main(String[] args) {
        //代码示例: 找到 100 - 200 中所有 3 的倍数
        int a = 100;
        while(a <= 200){
            if(a % 3 != 0){
                a++;
                continue;
            }
            System.out.print(a + " ");
            a++;
        }
    }

在这里插入图片描述

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句

3.2、for 循环

基本语法

	for(表达式1;表达式2;表达式3){
		循环体;
	}
  • 表达式1: 用于初始化循环变量.
  • 表达式2: 循环条件
  • 表达式3: 更新循环变量.

相比于 while 循环, for 循环将这三个部分合并在一起, 写代码时不容易遗漏

代码示例1: 打印 1 - 10 的数字

public static void main(String[] args) {
        //代码示例1: 打印 1 - 10 的数字
        for(int a = 1; a <= 10; a++){
            System.out.print(a + " ");
        }
    }

在这里插入图片描述

代码示例2: 计算 1 - 100 的和

public static void main(String[] args) {
        //代码示例2: 计算 1 - 100 的和
        int sum = 0;
        for(int i = 1; i <= 100; i++){
            sum = sum + i;
        }
        System.out.println(sum);
    }

代码示例3: 计算 5 的阶乘

public static void main(String[] args) {
        //代码示例3: 计算 5 的阶乘
        int ret = 1;
        for(int i = 1; i <= 5; i++){
            ret = ret * i;
        }
        System.out.println(ret);
    }

在这里插入图片描述

代码示例4: 计算 1! + 2! + 3! + 4! + 5!

public static void main(String[] args) {
        //代码示例4: 计算 1! + 2! + 3! + 4! + 5!
        int ret = 1;
        int sum = 0;
        for(int i = 1; i <= 5; i++){
            ret = ret * i;
            sum = sum + ret;
        }
        System.out.println(sum);
    }

在这里插入图片描述

注意事项 (和while循环类似)

  1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
  2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
  3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行

3.3、do while 循环

基本语法

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

先执行循环语句, 再判定循环条件

代码示例: 打印 1 - 10

public static void main(String[] args) {
        //代码示例: 打印 1 - 10
        int i = 1;
        do{
            System.out.print(i + " ");
            i++;
        }while(i <= 10);
    }

在这里插入图片描述

注意事项:

  1. do while 循环最后的分号不要忘记
  2. 一般 do while 很少用到, 更推荐使用 for 和 while

四、输入输出

4.1、输出到控制台

基本语法
三种打印方式:

System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出,和C语言的一样
在这里插入图片描述

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

C语言的打印方式

在这里插入图片描述

4.2、从键盘输入

4.2.1、从键盘上读入一个字符

直接使用 System.in.read 可以读入一个字符. 但是需要搭配异常处理(后面会重点讲到)

public static void main(String[] args) throws IOException {
        System.out.print("输入一个字符:");
        char ch = (char) System.in.read();
        System.out.println(ch);
    }

在这里插入图片描述

使用 Scanner 读取字符串/整数/浮点数

import java.util.Scanner; // 需要导入 util 包
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入正数:");
        int a = scanner.nextInt(); //输入正数
        
        System.out.println("输入字符串:");
        String str = scanner.nextLine();//输入字符串
    }
注意:输入字符串可以使用scanner.nextLine() 和 scanner.next()

这两个是有区别的:
scanner.nextLine(),进行输入的时候可以将空格读进去
在这里插入图片描述

scanner.next(),进行输入的时候遇到空格就结束了
在这里插入图片描述

使用 Scanner 循环读取 N 个数字

注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl +d).

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = 0;
        while (scanner.hasNextInt()){
        	// hasNextInt() 是用来判断 我们输入的数据是否为 int 类型
            // 是 就 返回 true,否,则返回 false
            // 当返回 true时,进入循环体
            a = scanner.nextInt();
            System.out.println(a);
        }
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Später321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值