Java从入门到精通-流程控制(二)

简介: Java从入门到精通-流程控制(二)

习题讲解:

上次我们给大家留了一些流程控制的问题,这次给大家分析讲解一下:


条件语句练习:

1.编写Java程序,用于接受用户输入的数字,然后判断它是偶数还是奇数,并输出相应的消息。

import java.util.Scanner;
public class OddEvenCheck {
    public static void main(String[] args) {
        // 创建一个Scanner对象来接受用户输入
        Scanner scanner = new Scanner(System.in);
        // 提示用户输入一个整数
        System.out.print("请输入一个整数: ");
        // 从用户输入中读取整数
        int number = scanner.nextInt();
        // 使用条件语句判断数字是偶数还是奇数
        if (number % 2 == 0) {
            System.out.println(number + " 是偶数。");
        } else {
            System.out.println(number + " 是奇数。");
        }
        // 关闭Scanner对象
        scanner.close();
    }
}

分析讲解:

  1. 我们首先导入java.util.Scanner类,以便能够从用户输入中读取数据
  2. 创建一个Scanner对象,这将帮助我们接受用户的输入。
  3. 使用System.out.print语句提示用户输入一个整数。
  4. 使用scanner.nextInt()从用户的输入中读取整数并将其存储在number变量中。
  5. 使用条件语句if来检查number是否是偶数。如果number除以2的余数等于0,那么它是偶数,否则是奇数。
  6. 根据判断结果,程序将输出相应的消息,告诉用户输入的数字是偶数还是奇数。
  7. 最后,我们使用scanner.close()来关闭Scanner对象,以释放资源。

例题总结:

这个程序演示了如何使用条件语句来判断用户输入的数字是偶数还是奇数。它首先接受用户输入,然后使用条件表达式检查输入的数字是否可以被2整除。如果可以,它被认为是偶数,否则被认为是奇数,并输出相应的消息。这个示例强调了Java中的条件语句的使用,是编程中的基础之一。

2.创建一个简单的登陆系统,要求用户输入用户名和密码。如果用户名是 “admin” 并且密码是 “password”,则显示欢迎消息,否则显示错误消息。

import java.util.Scanner;
public class SimpleLoginSystem {
    public static void main(String[] args) {
        // 创建一个Scanner对象来接受用户输入
        Scanner scanner = new Scanner(System.in);
        // 提示用户输入用户名
        System.out.print("请输入用户名: ");
        String username = scanner.nextLine();
        // 提示用户输入密码
        System.out.print("请输入密码: ");
        String password = scanner.nextLine();
        // 验证用户名和密码
        if (username.equals("admin") && password.equals("password")) {
            System.out.println("欢迎 " + username + " 进入系统!");
        } else {
            System.out.println("用户名或密码错误,请重试。");
        }
        // 关闭Scanner对象
        scanner.close();
    }
}

分析讲解:

  1. 我们首先导入java.util.Scanner类,以便能够从用户输入中读取数据。
  2. 创建一个Scanner对象,这将帮助我们接受用户的输入。
  3. 使用System.out.print语句提示用户输入用户名。
  4. 使用scanner.nextLine()从用户的输入中读取用户名并将其存储在username变量中。
  5. 提示用户输入密码。
  6. 使用scanner.nextLine()从用户的输入中读取密码并将其存储在password变量中。
  7. 使用条件语句if来验证用户名和密码是否匹配。如果用户名是"admin"且密码是"password",则显示欢迎消息;否则,显示错误消息。
  8. 最后,我们使用scanner.close()来关闭Scanner对象,以释放资源。

例题总结:

这个程序演示了如何创建一个简单的登录系统,要求用户输入用户名和密码,并验证这些信息。它使用条件语句来检查用户名和密码是否匹配,如果匹配则显示欢迎消息,否则显示错误消息。这个示例强调了Java中的条件语句和用户输入的处理。在实际应用中,安全性需要更复杂的处理,但这个示例提供了一个基本的框架。

3.编写一个程序,接受用户输入的年份,然后判断该年份是否为闰年,并输出相应的消息。闰年条件:能被4整除但不能被100整除,或者能被400整除。

import java.util.Scanner;
public class LeapYearCheck {
    public static void main(String[] args) {
        // 创建一个Scanner对象来接受用户输入
        Scanner scanner = new Scanner(System.in);
        // 提示用户输入一个年份
        System.out.print("请输入一个年份: ");
        int year = scanner.nextInt();
        // 使用条件语句判断是否为闰年
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            System.out.println(year + " 是闰年。");
        } else {
            System.out.println(year + " 不是闰年。");
        }
        // 关闭Scanner对象
        scanner.close();
    }
}

分析讲解:

  1. 我们首先导入java.util.Scanner类,以便能够从用户输入中读取数据。
  2. 创建一个Scanner对象,这将帮助我们接受用户的输入。
  3. 使用System.out.print语句提示用户输入一个年份。
  4. 使用scanner.nextInt()从用户的输入中读取年份并将其存储在year变量中。
  5. 使用条件语句if来判断年份是否为闰年。根据闰年的条件,我们检查两个条件:年份能够被4整除但不能被100整除,或者能够被400整除。如果两个条件中的任何一个满足,就认为是闰年。
  6. 根据判断结果,程序将输出相应的消息,告诉用户输入的年份是闰年还是不是闰年。
  7. 最后,我们使用scanner.close()来关闭Scanner对象,以释放资源。

例题总结:

这个程序演示了如何接受用户输入的年份,并使用条件语句来判断是否为闰年。它根据闰年的定义,检查了两个条件,以确定年份的闰年状态,并输出相应的消息。这个示例强调了Java中的条件语句的使用,是编程中的基础之一。

循环语句练习:

4.使用 for 循环打印出1到100的所有奇数。

public class PrintOddNumbers {
    public static void main(String[] args) {
        // 使用for循环遍历1到100的所有数字
        for (int i = 1; i <= 100; i++) {
            // 检查是否是奇数
            if (i % 2 != 0) {
                // 如果是奇数,就打印出来
                System.out.println(i);
            }
        }
    }
}

分析讲解:

  1. 我们使用 for 循环来遍历从1到100的所有数字,将 i 初始化为1,然后在每次迭代后增加1。
  2. 在循环的每一次迭代中,我们使用条件语句 if 来检查当前的数字 i 是否是奇数。
  3. 如果 i 不能被2整除(即 i % 2 != 0 为真),则它是奇数。
  4. 如果 i 是奇数,我们就使用 System.out.println(i); 打印出它。

例题总结:

这个程序将循环遍历1到100的数字,并只打印出奇数,即不被2整除的数字。这是一种常见的用法,用于筛选和处理特定类型的数字。

5.使用 while 循环找出一个正整数的所有因子

import java.util.Scanner;
public class FactorsOfNumber {
    public static void main(String[] args) {
        // 创建一个Scanner对象来接受用户输入
        Scanner scanner = new Scanner(System.in);
        // 提示用户输入一个正整数
        System.out.print("请输入一个正整数: ");
        int number = scanner.nextInt();
        // 初始化一个除数
        int divisor = 1;
        // 使用while循环找出所有因子
        System.out.print(number + " 的因子包括: ");
        while (divisor <= number) {
            if (number % divisor == 0) {
                System.out.print(divisor + " ");
            }
            divisor++;
        }
        // 关闭Scanner对象
        scanner.close();
    }
}

分析讲解:

  1. 我们首先导入java.util.Scanner类,以便能够从用户输入中读取数据。
  2. 创建一个Scanner对象,这将帮助我们接受用户的输入。
  3. 使用System.out.print语句提示用户输入一个正整数。
  4. 使用scanner.nextInt()从用户的输入中读取正整数并将其存储在number变量中。
  5. 初始化一个除数 divisor,开始为1。
  6. 使用 while 循环来查找 number 的因子。在每次迭代中,我们检查是否 number 能够被 divisor 整除。如果能够整除,就说明 divisor 是一个因子,并将其打印出来。
  7. 在每次迭代后,我们增加 divisor 的值,继续查找下一个因子。
  8. 最后,我们使用scanner.close()来关闭Scanner对象,以释放资源。

例题总结:

这个程序将找出用户输入的正整数的所有因子,并将它们打印出来。这是一种查找因子的常见方法,可以用于数学和算法问题中。

6.使用 do...while 循环实现一个猜数字游戏,程序随机生成一个数字,然后提示用户猜数字,直到用户猜中为止

import java.util.Scanner;
import java.util.Random;
public class GuessNumberGame {
    public static void main(String[] args) {
        // 创建一个Scanner对象来接受用户输入
        Scanner scanner = new Scanner(System.in);
        // 创建一个Random对象来生成随机数字
        Random random = new Random();
        // 生成随机数字(1到100之间)
        int target = random.nextInt(100) + 1;
        int attempts = 0; // 记录尝试次数
        int guess; // 用户猜的数字
        do {
            System.out.print("猜一个1到100之间的数字: ");
            guess = scanner.nextInt();
            attempts++;
            if (guess < target) {
                System.out.println("太小了,请再试一次。");
            } else if (guess > target) {
                System.out.println("太大了,请再试一次。");
            }
        } while (guess != target);
        System.out.println("恭喜,你猜对了!总共尝试了 " + attempts + " 次。");
        // 关闭Scanner对象
        scanner.close();
    }
}

分析讲解:

  1. 我们首先导入java.util.Scanner类和java.util.Random类,以便能够从用户输入中读取数据和生成随机数字。
  2. 创建一个Scanner对象,这将帮助我们接受用户的输入。
  3. 创建一个Random对象,用于生成随机的目标数字(在1到100之间)。
  4. 使用 do...while 循环来实现猜数字游戏,游戏会一直进行,直到用户猜中为止。
  5. 在每轮循环中,程序会提示用户输入猜测的数字,并将其存储在guess变量中。同时,attempts变量记录了用户的尝试次数。
  6. 程序会检查用户的猜测是否正确。如果猜测小于目标数字,就显示"太小了,请再试一次。“;如果猜测大于目标数字,就显示"太大了,请再试一次。”。
  7. 当用户猜中数字(guess == target)时,循环结束,并输出恭喜消息,显示用户猜中了,并告诉他们尝试的次数。
  8. 最后,我们使用scanner.close()来关闭Scanner对象,以释放资源。

例题总结:

这个程序实现了一个简单的猜数字游戏,用户可以尝试多次猜测,直到猜中目标数字为止。这种游戏可以用来练习do...while循环和条件语句的使用。

循环控制语句练习:

7.使用 break 语句改进上面的猜数字游戏,如果用户连续猜错5次,就自动结束游戏。

import java.util.Scanner;
import java.util.Random;
public class ImprovedGuessNumberGame {
    public static void main(String[] args) {
        // 创建一个Scanner对象来接受用户输入
        Scanner scanner = new Scanner(System.in);
        // 创建一个Random对象来生成随机数字
        Random random = new Random();
        // 生成随机数字(1到100之间)
        int target = random.nextInt(100) + 1;
        int attempts = 0; // 记录尝试次数
        int guess; // 用户猜的数字
        while (true) {
            System.out.print("猜一个1到100之间的数字: ");
            guess = scanner.nextInt();
            attempts++;
            if (guess < target) {
                System.out.println("太小了,请再试一次。");
            } else if (guess > target) {
                System.out.println("太大了,请再试一次。");
            } else {
                System.out.println("恭喜,你猜对了!总共尝试了 " + attempts + " 次。");
                break; // 用户猜对,结束游戏
            }
            if (attempts >= 5) {
                System.out.println("你已经尝试了5次,游戏结束。");
                break; // 用户连续猜错5次,结束游戏
            }
        }
        // 关闭Scanner对象
        scanner.close();
    }
}

分析讲解:

  1. 这个程序与前一个猜数字游戏程序类似,但是使用了一个 while (true) 循环,以便在用户连续猜错5次后自动结束游戏。
  2. 在每轮循环中,程序会检查用户的猜测是否正确。如果猜测小于目标数字,就显示"太小了,请再试一次。“;如果猜测大于目标数字,就显示"太大了,请再试一次。”。
  3. 如果用户猜中数字(guess == target),程序会输出恭喜消息,并显示用户尝试的次数,然后使用 break 语句结束游戏循环。
  4. 如果用户连续猜错5次(attempts >= 5),程序会输出消息并使用 break 语句结束游戏循环,结束游戏。

例题总结:

这个程序允许用户猜数字,并在用户连续猜错5次后自动结束游戏。这种改进可以增加游戏的交互性和挑战性。

8.使用 continue 语句编写一个程序,打印出1到100的所有数字,但跳过所有包含数字 7 的数字,例如,跳过 7, 17, 27…

public class PrintNumbersSkipSeven {
    public static void main(String[] args) {
        // 使用for循环遍历1到100的所有数字
        for (int i = 1; i <= 100; i++) {
            // 检查是否包含数字7
            if (containsSeven(i)) {
                continue; // 跳过包含数字7的数字
            }
            // 打印当前数字
            System.out.println(i);
        }
    }
    // 辅助函数:检查一个数字是否包含数字7
    private static boolean containsSeven(int number) {
        while (number > 0) {
            int digit = number % 10;
            if (digit == 7) {
                return true; // 包含数字7
            }
            number /= 10;
        }
        return false; // 不包含数字7
    }
}

分析讲解:

  1. 这个程序使用 for 循环来遍历1到100的所有数字,将 i 初始化为1,然后在每次迭代后增加1。
  2. 在每轮循环中,程序使用 containsSeven(i) 函数来检查当前的数字 i 是否包含数字7。
  3. containsSeven 函数用于检查一个数字是否包含数字7。它通过反复取数字的个位数,然后将数字除以10来检查每一位是否为7。
  4. 如果 containsSeven(i) 返回 true,则使用 continue 语句跳过包含数字7的数字,继续下一个数字。
  5. 如果不包含数字7,就使用 System.out.println(i); 打印当前数字。

例题总结:

这个程序将打印出1到100的所有数字,但会跳过包含数字7的数字。这是一种在特定条件下跳过某些迭代的常见做法。

9.创建一个简单的菜单程序,让用户选择不同的选项(例如,1. 添加新项目,2. 查看项目,3. 退出程序)。使用 switch 语句处理用户的选择

import java.util.Scanner;
public class SimpleMenu {
    public static void main(String[] args) {
        // 创建一个Scanner对象来接受用户输入
        Scanner scanner = new Scanner(System.in);
        int choice;
        do {
            // 显示菜单选项
            System.out.println("菜单:");
            System.out.println("1. 添加新项目");
            System.out.println("2. 查看项目");
            System.out.println("3. 退出程序");
            System.out.print("请选择选项(1/2/3): ");
            // 读取用户选择
            choice = scanner.nextInt();
            // 使用switch语句处理用户选择
            switch (choice) {
                case 1:
                    System.out.println("选项1:添加新项目");
                    // 在这里添加处理添加新项目的代码
                    break;
                case 2:
                    System.out.println("选项2:查看项目");
                    // 在这里添加处理查看项目的代码
                    break;
                case 3:
                    System.out.println("选项3:退出程序");
                    break;
                default:
                    System.out.println("无效的选项,请重新选择。");
            }
        } while (choice != 3); // 当用户选择退出时结束循环
        // 关闭Scanner对象
        scanner.close();
    }
}

分析讲解:

  1. 我们首先导入java.util.Scanner类,以便能够从用户输入中读取数据。
  2. 创建一个Scanner对象,这将帮助我们接受用户的输入。
  3. 使用 do...while 循环来实现菜单程序,循环将一直运行,直到用户选择退出。
  4. 在每轮循环中,程序显示菜单选项,提示用户选择。
  5. 使用scanner.nextInt()读取用户的选择并存储在choice变量中。
  6. 使用switch语句处理用户的选择。根据不同的选项,你可以在相应的case分支中添加处理代码。
  7. 如果用户选择退出(choice == 3),循环结束,程序退出。

例题总结:

这个程序演示了如何创建一个简单的菜单系统,允许用户选择不同的选项,并使用`switch`语句来处理这些选项。你可以根据需要扩展每个选项的功能。

相关文章
|
6天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
12天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
18天前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
56 5
|
15天前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
29 1
|
16天前
|
小程序 前端开发 算法
|
22天前
|
Java API 开发者
Java如何实现企业微信审批流程
大家好,我是V哥。本文分享如何在企业微信中实现审批流程,通过调用企业微信的开放API完成。主要内容包括获取Access Token、创建审批模板、发起审批流程和查询审批结果。提供了一个Java示例代码,帮助开发者快速上手。希望对你有帮助,关注V哥爱编程,编码路上同行。
|
22天前
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
43 3
|
23天前
|
Java
Java中的多线程编程:从入门到精通
本文将带你深入了解Java中的多线程编程。我们将从基础概念开始,逐步深入探讨线程的创建、启动、同步和通信等关键知识点。通过阅读本文,你将能够掌握Java多线程编程的基本技能,为进一步学习和应用打下坚实的基础。
|
25天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第19天】本文介绍了Java编程中重要的数据结构——Map,通过问答形式讲解了Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的使用和性能优化技巧,适合初学者和进阶者学习。
42 4
|
24天前
|
Java
[Java]Socket套接字(网络编程入门)
本文介绍了基于Java Socket实现的一对一和多对多聊天模式。一对一模式通过Server和Client类实现简单的消息收发;多对多模式则通过Server类维护客户端集合,并使用多线程实现实时消息广播。文章旨在帮助读者理解Socket的基本原理和应用。
20 1