免费建网站入驻企业网站提交

张小明 2026/1/19 17:29:29
免费建网站入驻,企业网站提交,莆田哪里有网站开发,网页设计实训报告前言零基础也能轻松玩转Java输入#xff1a;Scanner类实战全解析你有没有写过这样的程序#xff1f;运行后黑乎乎的控制台弹出来#xff0c;只打印一行“Hello World”#xff0c;然后啪一下就结束了。你想让它多做点事——比如问你叫什么名字、算个加法、或者记录点信息……但…零基础也能轻松玩转Java输入Scanner类实战全解析你有没有写过这样的程序运行后黑乎乎的控制台弹出来只打印一行“Hello World”然后啪一下就结束了。你想让它多做点事——比如问你叫什么名字、算个加法、或者记录点信息……但发现它“听不懂人话”别急今天我们就来解决这个问题。让Java程序真正“学会倾听”用户输入的第一步就是掌握Scanner类。这玩意儿看起来不起眼却是每个Java初学者必须跨过的一道门槛。无论是刷题、考试、课程设计还是自己练手写个小工具都绕不开它。为什么是 Scanner从“哑巴程序”到会对话的小助手在没有Scanner之前你的程序就像一个只会自言自语的机器人- 它输出一堆东西但完全不知道你在想啥- 所有数据都是写死的改一次就得重新编译。而有了Scanner之后它就能张嘴问你“请输入年龄”、“请选择操作”、“继续吗”……一下子就有了交互感。Scanner是 Java 标准库中java.util包里的一个公共类专为“读取文本输入”而生。它可以轻松地从键盘、文件甚至字符串中提取整数、小数、单词或一整行内容而且语法简单到连新手都能看懂。更重要的是——它不需要复杂的配置几行代码就能上手。怎么用三步搞定用户输入第一步导入 创建对象import java.util.Scanner; public class InputDemo { public static void main(String[] args) { Scanner scanner new Scanner(System.in); } }就这么一句new Scanner(System.in)你就拿到了一个能监听键盘输入的“耳朵”。 小知识System.in是标准输入流默认对应键盘。你可以把它理解成“数据入口”。第二步开始“听”用户说了啥接下来就可以调用各种nextXXX()方法来读取不同类型的数据了方法用途scanner.next()读一个单词遇到空格或换行停止scanner.nextLine()读一整行包括中间的空格scanner.nextInt()读一个整数scanner.nextDouble()读一个小数scanner.nextBoolean()读布尔值true/false举个例子System.out.print(请输入你的名字); String name scanner.nextLine(); // 可以输入“张三”、“李小龙”这种带空格的名字 System.out.print(请输入年龄); int age scanner.nextInt(); System.out.println(你好 name 你今年 age 岁了);运行效果请输入你的名字王大锤 请输入年龄25 你好王大锤你今年 25 岁了是不是瞬间觉得程序“活”起来了第三步记得关掉“耳朵”每次用完别忘了关闭资源scanner.close();虽然不关也不会立刻出问题但养成好习惯很重要——避免潜在的内存泄漏也让你的代码更专业。别被这些坑绊倒新手常见问题全避雷很多同学学到这里都会踩几个“经典陷阱”。我们一个个拆解。❌ 陷阱一nextInt()后面跟nextLine()结果直接跳过了代码长这样System.out.print(请输入年龄); int age scanner.nextInt(); System.out.print(请输入姓名); String name scanner.nextLine(); // 这里居然没等输入直接跳过去了原因揭秘当你输入20然后按回车时你其实在输入缓冲区留下了两样东西- 数字20- 回车符\nnextInt()只拿走了数字把\n留在了后面。紧接着nextLine()一看“哟前面有个换行符”——立马认为“这一行已经结束了”于是返回空字符串根本不等你输入。✅解决方案手动吃掉残留的换行符int age scanner.nextInt(); scanner.nextLine(); // 这句专门用来吸收回车符 String name scanner.nextLine(); // 正常输入姓名 记住口诀只要用了 nextInt()/nextDouble() 等非 nextLine() 方法后还想读行就补一个 nextLine() 清场。❌ 陷阱二用户乱输导致程序崩溃比如你让别人输年龄他偏要打个 “abc”……int age scanner.nextInt(); // 输入 abc → 直接抛异常程序崩了这体验太差了。作为开发者我们要学会“防呆设计”。✅正确做法先判断再读取if (scanner.hasNextInt()) { int age scanner.nextInt(); } else { System.out.println(请输入合法的数字); scanner.next(); // 清除错误输入防止死循环 }hasNextInt()就像一个探测器提前告诉你“下一个是不是整数”不是那就提醒用户并用scanner.next()把垃圾数据扔掉。❌ 陷阱三多个 Scanner 同时读键盘互相打架有人图方便在不同方法里都写Scanner s1 new Scanner(System.in); // ...用完关了 s1.close(); Scanner s2 new Scanner(System.in); // 错了不能再开了问题来了一旦某个Scanner被.close()它会顺带把底层的System.in流也关掉后面再创建新的Scanner就读不了数据了。✅最佳实践全局只用一个 Scannerpublic class MyApp { private static final Scanner scanner new Scanner(System.in); public static void main(String[] args) { getInput1(); getInput2(); scanner.close(); // 最后统一关闭 } static void getInput1() { System.out.print(输入第一项); String s scanner.nextLine(); } static void getInput2() { System.out.print(输入第二项); String s scanner.nextLine(); } }这样既安全又高效。实战演练做个会思考的简易计算器光讲理论不够劲来个真实项目练练手。目标做一个支持连续计算的控制台计算器能处理加减乘除还能自动校验输入。import java.util.Scanner; public class SmartCalculator { public static void main(String[] args) { Scanner scanner new Scanner(System.in); boolean running true; System.out.println(【欢迎使用智能计算器】); while (running) { // 第一步读第一个数 System.out.print(请输入第一个数字); if (!scanner.hasNextDouble()) { System.out.println(❌ 错误请输入有效数字); scanner.next(); // 清除非法输入 continue; } double a scanner.nextDouble(); // 第二步读运算符 System.out.print(请输入运算符 (, -, *, /): ); String opStr scanner.next(); char op opStr.charAt(0); // 第三步读第二个数 System.out.print(请输入第二个数字); if (!scanner.hasNextDouble()) { System.out.println(❌ 错误请输入有效数字); scanner.next(); continue; } double b scanner.nextDouble(); // 计算结果 Double result null; switch (op) { case : result a b; break; case -: result a - b; break; case *: result a * b; break; case /: if (b 0) { System.out.println(❌ 错误除数不能为零); continue; } result a / b; break; default: System.out.println(❌ 不支持的运算符 op); continue; } // 输出结果 System.out.printf(✅ 结果%f %c %f %.4f%n, a, op, b, result); // 是否继续 System.out.print(继续计算吗(y/n): ); String choice scanner.next(); if (choice.equalsIgnoreCase(n)) { running false; } } System.out.println(感谢使用再见); scanner.close(); } }这个程序展示了- 如何结合hasNextXXX()做输入验证- 如何处理异常情况如除零、非法输入- 如何实现循环交互- 如何优雅退出。这才是真正“健壮”的控制台程序该有的样子。更进一步不只是键盘输入你以为Scanner只能读键盘错它的能力远不止于此。 场景1从字符串中解析数据比如你要解析一条日志ID:1001 Score:98.5 Passed:true可以用Scanner拆解String log ID:1001 Score:98.5 Passed:true; Scanner parser new Scanner(log).useDelimiter([^\\d.]); // 非数字/点字符作为分隔符 int id parser.nextInt(); // 1001 double score parser.nextDouble(); // 98.5 boolean passed parser.nextBoolean(); // true 场景2读取文件内容Scanner fileScanner new Scanner(new File(data.txt)); while (fileScanner.hasNextLine()) { System.out.println(fileScanner.nextLine()); } fileScanner.close(); 自定义分隔符处理 CSV 数据scanner.useDelimiter(,); // 改成分号、制表符也可以这样一来输入苹果,香蕉,橙子就可以逐个读取水果名称。最佳实践总结写出高质量的输入代码建议说明✅ 全局复用一个Scanner避免多次打开/关闭System.in✅ 优先使用nextLine()读字符串特别是可能含空格的内容✅ 在nextInt()后加nextLine()清理换行防止后续读行失败✅ 使用hasNextXXX()提前判断类型提升程序稳定性✅ 配合try-catch处理极端情况进阶必备技能✅ 最终一定要scanner.close()好习惯成就专业程序员写在最后Scanner 是起点不是终点坦白说Scanner并不适合高并发、大数据量的场景。在性能敏感的应用中我们会选择BufferedReaderInputStreamReader的组合效率更高。但对初学者来说Scanner是最温柔的入门方式。它让你快速看到成果建立信心理解“输入 → 处理 → 输出”的完整流程。它是你写出第一个“会说话”的程序的起点也是你迈向复杂系统的第一步。当你有一天不再需要它时请记得回头看看——正是这个简单的类教会了你如何让程序“听见”世界的声音。如果你正在学Java不妨现在就打开IDE写一个用Scanner和你聊天的小程序试试比如让它记住你的爱好、帮你选午餐、或者讲个笑话。编程的乐趣往往就藏在那一句“请输入……”之后。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

企业网站建设 百度文库福州网站建设 联系yanktcn 04

查看全文:https://www.longkui.site/program/java/java-jeesite-jeecgboot-smartadmin-ruoyi/7161/ 在Java后端开发中,选择合适的快速开发框架对于项目的开发效率和质量至关重要。本文将围绕技术特点、优劣势、适用场景、最佳实践及实际案例,…

张小明 2026/1/17 22:23:27 网站建设

随州网站建设哪家专业中国建筑集团有限公司怎么样

基于注意力模块及1D-CNN的滚动轴承故障诊断故障诊断代码 复现针对传统的卷积神经网络对特征的辨识性差的问题,提出一种将注意力模块与一维卷积神经网络相结合的滚动轴承故障诊断模型 首先以加入噪声的振动信号作为输入,利用“卷积池化”单元提取信号的多…

张小明 2026/1/17 22:23:28 网站建设

华大 建设网站专做美妆的网站

作为厦门大学学子,你是否曾为论文格式调整而烦恼?XMU-thesis正是为你量身打造的学术写作利器。这个专为厦大学生设计的LaTeX模板,将让你彻底告别格式困扰,专注于学术内容的深度创作。 【免费下载链接】XMU-thesis A LaTeX templat…

张小明 2026/1/17 22:23:31 网站建设

网站多种语言是怎么做的湖南省城乡和住房建设厅网站

AMD近日发布了全新的文本到图像扩散模型家族Nitro-E,以304M的轻量级参数实现了高效训练与推理,标志着大模型在资源优化方向的重要突破。 【免费下载链接】Nitro-E 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Nitro-E 当前AI生成图像领域正…

张小明 2026/1/17 22:23:31 网站建设

作文网站大全谷哇网站建设

Excalidraw 成本分摊计算模型 在今天的远程协作环境中,团队越来越依赖直观、灵活的可视化工具来加速设计讨论和架构评审。然而,随着使用频率上升,尤其是当这类工具集成了 AI 能力并支持多人实时协同时,组织开始面临一个现实问题&a…

张小明 2026/1/17 22:23:32 网站建设

外贸网站模板外贸网站建设微信h5制作网站开发

文章提供了一条完整的AI大模型学习路线,涵盖数学与编程基础、机器学习入门、深度学习深入、大模型探索、进阶应用及社区参与。各阶段配有经典书籍、在线课程和实践项目推荐,并附赠免费学习资源,包括学习路线图、视频教程、技术文档和面试题等…

张小明 2026/1/17 22:23:32 网站建设