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`语句来处理这些选项。你可以根据需要扩展每个选项的功能。

相关文章
|
18天前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
221 0
|
2月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
317 3
|
2月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
618 1
|
1月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
317 3
|
2月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
245 1
|
2月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
2月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
26天前
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
339 0
|
1月前
|
监控 Java API
2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
284 0
|
2月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
197 1

热门文章

最新文章