more或less控制汽车速度的方法详解
时间:2026-04-25 10:21:32 426浏览 收藏
本文介绍了一种简洁可靠的汽车速度动态调整方法:通过在循环外声明并持续更新一个速度变量,让用户只需反复输入“more”或“less”,即可实现速度的累加或递减(如5→10→15 MPH),彻底避免状态丢失、重复赋值和资源浪费;方案采用Scanner复用、trim()去空格、equalsIgnoreCase()安全比对、清晰的错误提示与优雅退出机制,兼顾健壮性、可读性与Java最佳实践,轻松集成于车辆模拟、教学演示或命令行工具中。
本文介绍一种简洁可靠的方式,通过维护一个持续更新的速度变量,在用户反复输入“more”或“less”时实现速度的累加/递减(如5→10→15 MPH),避免重复赋值或状态丢失。
要实现“每输入一次 more 就在当前速度基础上增加 5 MPH”的交互逻辑,关键在于状态持久化——即速度值必须在多次输入之间被保留,而非每次调用函数时重置。原始代码中存在多个典型问题:Scanner 在循环内反复创建导致资源浪费;使用 == 比较字符串引发逻辑错误;局部变量未跨迭代保存;数组和嵌套循环设计冗余且未正确使用。
以下是优化后的完整实现:
public static void readInputSpeed(String prompt) {
Scanner sc = new Scanner(System.in); // ✅ Scanner 实例复用,提升效率与稳定性
int speed = 0; // ✅ 状态变量:在循环外声明,生命周期覆盖整个交互过程
String input = "";
while (!input.equalsIgnoreCase("quit")) { // ✅ 使用 equalsIgnoreCase() 安全比对,支持 "MORE"、"More" 等大小写变体
System.out.print(prompt);
input = sc.nextLine().trim(); // ✅ 添加 trim() 防止空格干扰判断
if (input.equalsIgnoreCase("more")) {
speed += 5;
} else if (input.equalsIgnoreCase("less")) {
speed -= 5;
} else if (!input.equalsIgnoreCase("quit")) {
System.out.println("⚠️ 无效指令:请输入 'more'、'less' 或 'quit'");
continue; // 跳过无效输入后的输出,保持界面清晰
}
if (!input.equalsIgnoreCase("quit")) {
System.out.println(speed + " MPH"); // ✅ 仅对有效操作反馈当前速度
}
}
System.out.println("✅ 速度控制已退出,最终速度:" + speed + " MPH");
sc.close(); // ✅ 显式关闭 Scanner,避免资源泄漏(尤其在长期运行程序中)
}核心要点说明:
- 状态管理:speed 变量定义在 while 循环外部,确保每次循环迭代都能读取并更新上一次的结果;
- 字符串比较安全:始终使用 equalsIgnoreCase() 替代 ==(后者比较引用而非内容);
- 输入健壮性:.trim() 消除首尾空格,else if 分支过滤非法输入,并提供友好提示;
- 资源规范:Scanner 单例复用 + 最终 close(),符合 Java I/O 最佳实践;
- 用户体验:退出时输出总结信息,便于调试与确认最终状态。
该方案无需数组、无需嵌套循环、不依赖外部类字段(如 Car.speed() 的静态状态),结构清晰、可读性强,可直接集成到车辆模拟、教学演示或命令行工具中。
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《more或less控制汽车速度的方法详解》文章吧,也可关注golang学习网公众号了解相关技术文章。
相关阅读
更多>
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
最新阅读
更多>
-
299 收藏
-
115 收藏
-
128 收藏
-
407 收藏
-
429 收藏
-
410 收藏
-
311 收藏
-
228 收藏
-
414 收藏
-
446 收藏
-
381 收藏
-
308 收藏
课程推荐
更多>
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习