在Java编程学习中,输入输出、循环控制和逻辑判断是核心基础。本文整理了10个经典案例,涵盖Scanner输入处理、斐波那契数列、成绩统计、登录验证等场景,帮助初学者掌握编程逻辑与实用技巧。

一、Scanner输入交互:获取用户输入并处理

Scanner是Java中处理用户输入的常用类,以下案例展示了如何通过Scanner实现不同场景的输入交互。

案例1:数字拆分与加法表

功能:接收用户输入的数字,打印所有“两个数相加等于该数字”的组合。

package a1;
import java.util.Scanner;public class NumberSplitter {public static void main(String[] args) {System.out.println("请输入一个数字");Scanner s1 = new Scanner(System.in);int a = s1.nextInt(); // 接收整数输入// 循环打印所有相加等于a的组合for (int i = 0; i <= a; i++) {System.out.println(i + "+" + (a - i) + "=" + a);}}
}

解析

  • 通过Scanner.nextInt()获取用户输入的整数。
  • 外层循环遍历从0到a的所有整数i,计算对应的另一个加数a-i,打印加法公式。

案例2:跑步进度交互

功能:模拟跑步进度提示,每跑400米询问用户状态,根据输入决定继续或休息。

package a1;
import java.util.Scanner;public class RunningTracker {public static void main(String[] args) {// 从400米开始,每次递增400米,直到4000米for (int i = 400; i <= 4000; i += 400) {System.out.println("你已经跑了" + i + "米,累了吗?");Scanner s1 = new Scanner(System.in);String a = s1.next(); // 接收字符串输入// 根据用户输入判断后续操作if (a.equals("累了")) {System.out.println("休息!");break; // 退出循环,停止跑步} else if (a.equals("不累")) {System.out.println("继续跑!");} else {System.out.println("输入错误,继续跑!");}}}
}

解析

  • 外层循环以400米为间隔递增,模拟跑步进度。
  • 通过Scanner.next()接收用户输入的字符串(“累了”“不累”或其他),用equals()方法比较字符串,实现分支逻辑。

案例3:成绩录入与平均分计算

功能:接收5门课程的成绩,计算并打印平均分。

package a1;
import java.util.Scanner;public class ScoreAverage {public static void main(String[] args) {System.out.println("请输入你的姓名");Scanner s1 = new Scanner(System.in);String name = s1.next(); // 接收姓名double sum = 0; // 总成绩for (int i = 1; i <= 5; i++) {System.out.println("请输入你第" + i + "门的成绩");Scanner s2 = new Scanner(System.in);int score = s2.nextInt(); // 接收成绩if (score > 0) { // 简单校验成绩有效性sum += score;} else {System.out.println("输入错误");}}System.out.println(name + "的平均分为" + (sum / 5));}
}

解析

  • sum变量累加有效成绩,通过循环接收5门成绩。
  • 注意:实际开发中需完善成绩校验(如0-100分范围),此处仅做简单判断。

二、斐波那契数列:经典数学序列的实现

斐波那契数列是指从0和1开始,后续每一项都是前两项之和(如0, 1, 1, 2, 3, 5…)。

案例4:打印前20项斐波那契数

package a1;public class FibonacciSequence {public static void main(String[] args) {int a = 0; // 第n-2项int b = 1; // 第n-1项int c = 0; // 第n项(结果)for (int i = 1; i <= 20; i++) {c = a + b; // 计算当前项a = b;     // 更新前两项的值b = c;System.out.println(c); // 打印当前项}}
}

解析

  • 初始值a=0b=1,通过循环计算第3项到第20项(c = a + b)。
  • 每次循环后更新ab的值,确保下一次计算正确。

三、成绩统计:分数区间判断与分析

案例5:成绩等级判断与优秀率计算

功能:输入5门成绩,判断每门成绩的等级(不合格/良好/优秀),统计80分以上的人数及平均分。

package a1;
import java.util.Scanner;public class ScoreAnalyzer {public static void main(String[] args) {double sumExcellent = 0; // 80分以上成绩总和int countExcellent = 0;  // 80分以上人数for (int i = 1; i <= 5; i++) {System.out.println("请输入你第" + i + "门的成绩");Scanner s2 = new Scanner(System.in);int score = s2.nextInt();// 判断成绩等级if (score >= 0 && score <= 60) {System.out.println("成绩不合格");} else if (score > 60 && score <= 80) {System.out.println("成绩良好");} else if (score > 80 && score <= 100) {System.out.println("成绩优秀");sumExcellent += score;countExcellent++;} else {System.out.println("输入错误");}}// 打印统计结果(注意避免除以0)if (countExcellent > 0) {System.out.println("成绩大于80分的人数为" + countExcellent + "。平均成绩为" + (sumExcellent / countExcellent));} else {System.out.println("没有成绩大于80分的科目");}}
}

解析

  • 用多重if-else判断成绩区间,对80分以上的成绩单独累加和计数。
  • 最后判断优秀人数是否为0,避免除法运算出错。

四、机会限制问题:登录验证与输入次数控制

案例6:密码验证(3次机会)

功能:用户输入密码,最多有3次机会,正确则登录成功,失败3次则冻结账户。

package a1;
import java.util.Scanner;public class PasswordValidator {public static void main(String[] args) {System.out.println("请输入你的密码");for (int i = 1; i <= 3; i++) { // 限制3次机会Scanner s2 = new Scanner(System.in);String password = s2.next();if (password.equals("666666")) { // 假设正确密码为666666System.out.println("成功进入主界面");break; // 验证通过,退出循环} else {int remaining = 3 - i; // 计算剩余机会System.out.println("输入错误,你还有" + remaining + "次机会");if (remaining == 0) {System.out.println("用户卡被冻结,不能再输了");}}}}
}

解析

  • 循环次数i从1到3,通过3 - i计算剩余机会。
  • 验证成功用break退出循环,失败3次后提示账户冻结。

案例7:用户名+密码双重验证

功能:同时验证用户名和密码,3次失败则锁定,每次失败后可重新输入。

package a1;
import java.util.Scanner;public class UserLogin {public static void main(String[] args) {// 初始输入用户名和密码System.out.println("请输入用户名");Scanner s = new Scanner(System.in);String username = s.next();System.out.println("请输入密码");Scanner s2 = new Scanner(System.in);String password = s2.next();for (int i = 1; i <= 3; i++) {if (username.equals("666666") && password.equals("666666")) {System.out.println("成功进入主界面");break;} else {int remaining = 3 - i;System.out.println("输入错误!你还有" + remaining + "次机会!");if (remaining == 0) {System.out.println("对不起,您3次均输入错误!");} else {// 重新输入用户名和密码System.out.println("请输入用户名");Scanner s3 = new Scanner(System.in);username = s3.next();System.out.println("请输入密码");Scanner s4 = new Scanner(System.in);password = s4.next();}}}}
}

解析

  • 双重验证条件username.equals(...) && password.equals(...)确保两者都正确。
  • 每次失败后重新接收输入,更新usernamepassword的值。

案例8:会员信息录入与验证

功能:录入会员信息(4位会员号、生日、积分),验证会员号有效性(1000-9999之间)。

package a1;
import java.util.Scanner;public class MemberInfo {public static void main(String[] args) {// 循环录入2条会员信息for (int i = 1; i <= 2; i++) {System.out.println("请输入会员号(<4位整数>):");Scanner s = new Scanner(System.in);int memberId = s.nextInt();System.out.println("请输入会员生日(月/日<用两位整数表示>):");Scanner s22 = new Scanner(System.in);String birthday = s22.next();System.out.println("请输入会员积分:");Scanner s3 = new Scanner(System.in);int points = s3.nextInt();// 打印信息并验证会员号System.out.println(memberId + "  " + birthday + "  " + points);if (!(memberId > 1000 && memberId < 10000)) {System.out.println("客户号" + memberId + "是无效会员号!\n输入信息失败");}}}
}

解析

  • 循环2次录入会员信息,包含整数(会员号、积分)和字符串(生日)。
  • !(memberId > 1000 && memberId < 10000)判断会员号是否为4位有效数字。

五、数组操作:字符串数组的定义与遍历

案例9:遍历打印字符串数组

功能:定义包含3个姓名的数组,通过循环打印所有元素。

package a1;public class NameArray {public static void main(String[] args) {String names[] = {"张三", "李四", "王五"}; // 定义字符串数组// 遍历数组(a.length获取数组长度)for (int i = 0; i < names.length; i++) {System.out.println(names[i]);}}
}

解析

  • 数组定义:String[] 数组名 = {元素1, 元素2, ...}
  • 数组名.length获取长度,避免硬编码索引,提高灵活性。

案例10:动态录入数组元素

功能:通过Scanner接收5个学生姓名,存储到数组中并打印。

package a1;
import java.util.Scanner;public class StudentArray {public static void main(String[] args) {String[] students = new String[5]; // 定义长度为5的字符串数组Scanner s = new Scanner(System.in);// 录入5个学生姓名for (int i = 0; i < students.length; i++) {System.out.println("请输入第" + (i + 1) + "个学生的姓名");students[i] = s.next(); // 为数组元素赋值}// 打印所有姓名System.out.println("你输入的5个学生的姓名为:");for (int i = 0; i < students.length; i++) {System.out.println(students[i] + "   ");}}
}

解析

  • 数组初始化:new String[5]创建长度为5的空数组。
  • 通过循环为每个索引赋值,再遍历打印,体现数组的动态使用。

总结:基础逻辑的核心应用

以上案例覆盖了Java编程的核心基础:

  • 输入处理Scanner类的nextInt()(整数)和next()(字符串)方法。
  • 循环控制for循环的计数、范围控制,break的退出逻辑。
  • 逻辑判断if-else分支、equals()字符串比较、逻辑运算符(&&)。
  • 数组操作:初始化、长度获取(length)、遍历与赋值。

初学者可通过修改案例参数(如斐波那契数列的项数、成绩的分数区间)加深理解,逐步掌握“输入-处理-输出”的编程思维。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92993.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92993.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92993.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 面试经典 150_数组/字符串_整数转罗马数字(18_12_C++_中等)(模拟)(对各位进行拆解)

LeetCode 面试经典 150_数组/字符串_整数转罗马数字&#xff08;18_12_C_中等&#xff09;题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;模拟&#xff09;&#xff1a;思路二&#xff08;对各位进行拆解&#xff09;&a…

计算机网络摘星题库800题笔记 第6章 应用层

第6章 应用层 6.1 网络应用的架构 考点 1 CS 架构 题组闯关 1.DNS 是基于 ( ) 模式的分布式系统。 A. C/S B. B/S C. P2P D. 以上均不正确 1.【参考答案】A 【解析】本题考查网络应用模型。 DNS 作为分布式应用&#xff0c;是一种典型的 C/S 模式&#xff0c;是随着 Internet 技…

BLUCK电路的输入电容应该怎么选取

借用TI的BULK芯片讨论一下输入电容怎么选取的问题&#xff0c;BULK电源是我们常用的电源&#xff0c;它的原理请看之前的文章&#xff1a; 高压差为何不用LDO&#xff1f;DCDC效率更高&#xff01;-CSDN博客 本文我们探讨一下输入电容&#xff0c;输入电容是控制纹波的关键&a…

CAN仲裁机制的原理

我们来详细讲 CAN 仲裁机制 的原理和工作方式,这是 CAN 总线最核心的特性之一。 1️⃣ 基本概念 CAN 总线是 多主机、多节点的串行总线,所有节点共享一根差分信号线(CAN_H / CAN_L)。 每个节点都可以随时发送消息(多主机机制) 总线只能同时有一个节点成功发送 仲裁 用…

【GPT入门】第46课 vllm安装、部署与使用

【GPT入门】第46课 vllm安装、部署与使用 1.准备服务器 2. 安装 conda环境,隔离base环境 3. vllm使用 3.1 在线推理, openai兼容服务器 3.2 模型离线调用 4. 没有使用GPU问题分析 1.准备服务器 cuda 版本选12.1 vllm官网介绍: https://vllm.hyper.ai/docs/getting-started/…

【从网络基础到实战】理解TCP/IP协议体系的核心要点(包含ARP协议等其他协议介绍)

前言&#xff1a; 学习计算机网络不仅是软件开发的基础功&#xff0c;更是成为一名合格后端工程师、网络工程师的重要门槛。本文将基于 TCP/IP 协议体系&#xff0c;系统梳理网络层、数据链路层、以及相关协议的核心知识&#xff0c;并结合实际案例与代码示例帮助理解。一、网络…

Python 元类基础:从理解到应用的深度解析

在 Python 的高级编程中&#xff0c;元类&#xff08;metaclass&#xff09; 无疑是最神秘又最强大的特性之一。它不仅是构建类的“工厂”&#xff0c;更是 Python 灵活对象模型的体现。本文将带你从基础概念入手&#xff0c;深入理解元类的本质、工作机制以及实际应用&#xf…

Nginx 配置代理服务器的详细方法

一、什么是代理服务器&#xff1f; 类型说明正向代理客户端通过代理访问目标服务器&#xff08;隐藏客户端身份&#xff09;反向代理客户端访问代理服务器&#xff0c;由代理服务器请求后端服务器&#xff08;隐藏后端服务器&#xff09; 二、Nginx 反向代理配置方法&#xff…

Lombok插件介绍及安装(Eclipse)

一、Lombok 的用途 Lombok是一个 Java 库&#xff0c;通过注解的方式简化 Java 代码的编写。它能够自动生成常见的代码&#xff0c;如getter、setter、toString、equals、hashCode等方法&#xff0c;从而减少样板代码&#xff0c;使代码更加简洁、易读。 Lombok 通过添加**Dat…

硬核操作!Go 语言生成 “会爬墙的清洁机器人”,玻璃外墙自己擦

本文聚焦于利用 Go 语言开发 “会爬墙的清洁机器人” 这一硬核技术&#xff0c;围绕该机器人如何实现玻璃外墙自主清洁展开。首先介绍开发背景与需求&#xff0c;接着阐述 Go 语言在其中的优势&#xff0c;详细讲解机器人的核心技术&#xff0c;包括吸附系统、运动控制、清洁机…

Qt——实现”Hello World“、认识对象树与Qt坐标系

在创建项目时&#xff0c;使用的基类Base Class为QWidget 1. 使用图形化界面的方式实现“Hello World” 双击文件&#xff1a;widget.ui&#xff0c;进入designer模式&#xff1a;在“控件盒子”的“Display Widgets”中找到“Label”&#xff0c;并拖放到白板中双击刚刚拖放到…

智能合约开发全流程实战指南

目录 灵感探索与概念验证合约开发常见问题 Hardhat 初始化项目问题合约编译错误处理智能合约设计缺陷 合约测试最佳实践 单元测试环境配置测试用例编写技巧测试覆盖率和策略常见测试失败原因 合约部署实战指南 部署到不同网络部署前准备事项部署后验证方法部署费用和Gas优化 合…

IPA1299至为芯替代TI ADS1299的脑机接口芯片

在脑机接口、神经科学研究和医疗电子设备领域&#xff0c;脑电信号采集芯片是连接生物电信号与数字世界的重要组件。目前&#xff0c;TI等国际厂商凭借技术优势占据市场主要份额&#xff0c;国内厂商在成本控制、供货周期和技术自主性方面面临挑战。英集芯推出的IPA1299低噪声多…

「数据获取」《中国海洋生态环境状况公报》(2001-2023年)(获取方式看绑定的资源)

01、数据简介在 2023 年的海洋环境监测工作中&#xff0c;监测范围广泛且细致。全年对 1359 个海洋环境质量国家控制点位进行了水质监测&#xff0c;这些点位分布在我国管辖的各大海域&#xff0c;能够全面反映海洋整体水质状况&#xff1b;对 230 个入海河流国家控制断面开展监…

通过限制网络访问来降低服务器被攻击风险的方法

限制网络访问是降低服务器被攻击风险的核心思路之一&#xff0c;因为绝大多数入侵都是从开放的网络入口开始的。思路是“减少暴露面 精确授权”&#xff0c;让服务器只对必要的人、必要的业务开放。我给你分成几个层次来说明&#xff0c;从最外层网络入口到最内层系统配置都涉…

python与JavaScript的区别

Python 与 JavaScript 的主要区别&#xff08;按常用维度划分&#xff09;维度PythonJavaScript诞生时间 / 背景1991 年&#xff0c;由 Guido van Rossum 设计&#xff0c;目标是“一种易读、易写的通用脚本语言”。1995 年&#xff0c;由 Brendan Eich 为 Netscape 浏览器诞生…

Java 比较器解析

一、比较器的核心作用与应用场景在 Java 编程中&#xff0c;数据比较是一个基础但重要的操作。对于基本数据类型&#xff08;如 int、double、boolean、char 等&#xff09;&#xff0c;Java 语言本身就提供了完整的比较运算符&#xff08;>、<、、>、<、!&#xf…

Java学习第一百二十一部分——HTTP

目录 一、前言简介 二、核心特性 三、通信基础结构 四、关键组件详解 五、性能演进——版本对比 六、开发者建议 七、总结归纳 一、前言简介 HTTP&#xff08;“H”yper“t”ext “T”ransfer “P”rotocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最广泛…

记录RK3588的docker中启动rviz2报错

安装好rk3588 的docker&#xff0c;pull了ros的完整镜像后&#xff0c;想要启动rviz但是报错&#xff0c;下面是我的踩坑记录 0.原始的启动镜像的脚本&#xff1a; sudo docker run -it --rm --privileged --nethost -e DISPLAY$DISPLAY --namemy_image_name \-e DISPLAY$DIS…

ThingJS 新手学习技巧

一、ThingJS 基础认知 1.1 ThingJS 是什么 ThingJS 是一款基于 WebGL 技术的 3D 可视化开发平台&#xff0c;它为开发者提供了简单易用的 API 和丰富的 3D 场景组件&#xff0c;让开发者能够快速构建出高质量的 3D 可视化应用。无论是智慧园区、智慧楼宇、智慧交通还是工业监…