Java流程控制练习顺序结构,分支结构if-else、switch-case、循环结构for循环、while循环

Java流程控制练习顺序结构,分支结构if-else、switch-case、循环结构for循环、while循环

Richer Chen
2024-03-13 / 0 评论 / 40 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年03月13日,已超过198天没有更新,若内容或图片失效,请留言反馈。
本文共 843 个字数,平均阅读时长 ≈ 3分钟

分支结构

if-else

小明注册某论坛,要求录入个人相关信息如下:
请输入你的姓名、你的年龄、你的体重、你是否单身、你的性别等情况。

code代码

import java.util.Scanner;

/*
流程if-else练习:小明注册某论坛,要求录入个人相关信息如下:
请输入你的姓名、你的年龄、你的体重、你是否单身、你的性别等情况。
 */
public class IfElseTest {
    public static void main(String[] args) {
        //定义姓名,年龄,体重,是否单身,性别变量
        String name;
        int age;
        double weight;
        boolean isSingle;
        char gender;

        //从控制台接收数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎注册XXX论坛!!!");
        System.out.println("请输入你的姓名:");
        name = scanner.next();
        System.out.println("请输入你的年龄:");
        age = scanner.nextInt();
        System.out.println("请输入你的体重:");
        weight = scanner.nextDouble();
        System.out.println("请输入你是否单身(是输入true,否输入false):");
        isSingle = scanner.nextBoolean();
        System.out.println("请输入你的性别(男/女):");
        gender = scanner.next().charAt(0);

        //输出结果
        System.out.println("你的个人信息为:\n姓名:" + name + "\n年龄:" + age + "\n体重:" + weight + "\n是否单身:" + isSingle + "\n性别:" + gender);

        //关闭资源,scanner不会自动回收
        scanner.close();
    }
}

运行效果

ltpbgd7w.png

switch-case

编写程序,从键盘输入2023年的"month"和"day",要求通过程序输出输入的日期为2023年的第几天

code代码

import java.util.Scanner;

/*
switch-case练习:编写程序,从键盘输入2023年的"month"和"day",要求通过程序输出输入的日期为2023年的第几天
 */
public class SwitchCaseTest {
    public static void main(String[] args) {
        //定义月份、天数、每个月天数、第几天变量
        int month, days, monthDays, totalDays=0;

        //接收键盘输入的月份和天数
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入2023年月份:");
        month = scanner.nextInt();
        System.out.print("请输入2023" + month + "月天数:");
        days = scanner.nextInt();

        //计算总天数,利用了switch-case穿透性
        switch (month) {
            case 12:
                totalDays += 30;
            case 11:
                totalDays += 31;
            case 10:
                totalDays += 30;
            case 9:
                totalDays += 31;
            case 8:
                totalDays += 31;
            case 7:
                totalDays += 30;
            case 6:
                totalDays += 31;
            case 5:
                totalDays += 30;
            case 4:
                totalDays += 31;
            case 3:
                totalDays += 28;
            case 2:
                totalDays += 31;
            case 1:
                totalDays += days;
                break;
            default:
                System.out.println("您的输入有误");
        }

        //输出结果
        System.out.println("2023年" + month + "月" + days + "天是2023年的第" + totalDays + "天!");

        //关闭资源
        scanner.close();
    }
}

运行效果

ltpi1yzi.png

if与switch的选择

可以使用switch-case的情况都可以转换为if-else,反之不对。switch-case的条件是常量值(byte,short,int,char,枚举,String),使用场景较狭窄,if-else的条件是布尔值,使用情况较宽广。if-else和switch同时可以使用的时候建议使用switch-case,switch-case效率更高

循环结构

循环四要素

  1. 初始化部分
  2. 循环条件部分
  3. 循环体部分
  4. 迭代部分

for循环

四要素
for(1;2;4) {
3
}
执行流程:1 -> 2 -> 3 -> 4 -> 2 -> 3 -> 4 ...
练习:输入两个正整数m和n,求其最大公约数和最小公倍数
比如:12和20的最大公约数是4,最小公倍数是60

code代码

import java.util.Scanner;

/*
For循环练习:输入两个正整数m和n,求其最大公约数和最小公倍数
比如:12和20的最大公约数是4,最小公倍数是60
 */
public class ForTest {
    public static void main(String[] args) {
        //定义整数m和n,最大公约数x,最小公倍数y,中间变量temp
        int m, n, x, y, temp;

        //从键盘获取m,n的值
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入m的值:");
        m = scanner.nextInt();
        System.out.print("请输入n的值:");
        n = scanner.nextInt();

        //计算m与n的大公约数
        temp = Math.min(m, n);
        for (int i = temp; i >= 1; i--) {
            if (m % i == 0 && n % i == 0) {
                System.out.println("最大公约数为:" + i);
                break;
            }
        } 
        //计算m与n的最小公倍数
        temp = Math.max(m, n);
        for (int i = temp; ; i++) {
            if (i % m == 0 && i % n == 0) {
                System.out.println("最大公倍数为:" + i);
                break;
            }
        }

        //关闭scanner资源
        scanner.close();
    }
}

运行效果

ltpruac9.png

while循环

四要素
1
while(2) {
3
4
}
执行流程:1 -> 2 -> 3 -> 4 -> 2 -> 3 -> 4 ...
for循环可以和while循环相互转换
练习:随机生成一个100以内的整数,猜这个随机数是多少?从键盘输入数,如果
大了,提示大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次。

code代码

import java.util.Scanner;

/*
while循环练习:随机生成一个100以内的整数,猜这个随机数是多少?从键盘输入数,如果
大了,提示大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次。
 */
public class WhileTest {
    public static void main(String[] args) {
        //定义100以内的随机数,键盘输入的数,猜的总次数变量。
        int ranNum, input, count = 1;

        //生成随机1-100以内的数
        ranNum = (int) (Math.random() * 100) + 1;

        //接收用户输入并猜谜计算
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.print("输入你猜的数字(100以内):");
            input = scanner.nextInt();
            if (input < ranNum) {
                System.out.println("猜小了!!!");
            } else if (input > ranNum) {
                System.out.println("猜大了!!!");
            } else {
                System.out.println("恭喜你,猜对啦!!!");
                System.out.println("你总共猜了" + count + "次。");
                break;
            }
            count++;
        }

        //关闭scanner资源
        scanner.close();
    }
}

运行效果

ltpub2x6.png

2

打赏

海报

正在生成.....

评论 (0)

语录
取消