与网络公司洽谈做网站需要注意什么南宁公司网站模板建站

张小明 2026/1/11 9:39:14
与网络公司洽谈做网站需要注意什么,南宁公司网站模板建站,网页设计作品集模板,wordpress4.8 php7手把手教你掌握 Java Scanner 类#xff1a;从入门到实战你有没有遇到过这样的情况#xff1f;刚写完一个“计算两个数之和”的程序#xff0c;兴冲冲地运行起来#xff0c;结果输入3 5后按回车#xff0c;程序却直接报错退出了——连数据都读不进来#xff0c;还谈什么计…手把手教你掌握 Java Scanner 类从入门到实战你有没有遇到过这样的情况刚写完一个“计算两个数之和”的程序兴冲冲地运行起来结果输入3 5后按回车程序却直接报错退出了——连数据都读不进来还谈什么计算别急这其实是每个 Java 新手都会踩的坑Java 没有像 Python 那样内置的input()函数。要想让程序“听懂”用户的键盘输入我们必须借助标准库中的一个关键工具——Scanner。今天我们就来彻底搞明白这个看似简单、实则暗藏玄机的Scanner 类。它不仅是你写第一个交互式程序的“敲门砖”更是理解 Java 输入处理机制的起点。为什么是 Scanner它到底解决了什么问题在很多语言里获取用户输入轻而易举name input(请输入姓名)但在 Java 中如果你试图直接“读一行”会发现编译器根本不认这种语法。这是因为 Java 的设计哲学更偏向“显式优于隐式”。它把输入这件事拆解成了几个步骤打开输入通道比如键盘从通道中读取原始字节流把字节转成字符再解析成字符串或数字处理可能出错的情况比如输了个字母却要当整数用。这个过程听起来复杂但Scanner就是为了帮你屏蔽这些底层细节而生的。你可以把它想象成一个智能“翻译官”你告诉它“我要一个整数”它就自动帮你从一堆按键记录里找出下一个合法的整数你说“我要一整句话”它就把从现在开始到按下回车之间的所有内容打包给你。一句话总结Scanner是java.util包下的一个工具类专用于从各种来源如控制台、文件、字符串读取并解析基本类型数据。它是怎么工作的三步走战略别被“类”、“对象”这些术语吓到我们来看点实在的。当你写下这行代码时发生了什么Scanner sc new Scanner(System.in);这就像是在说“请给我派一个名叫sc的小助手它的任务是从系统输入也就是你的键盘监听数据。”接下来sc会执行一套标准流程扫描持续监听输入流直到遇到分隔符默认是空格、制表符或换行匹配把截取到的一段文本称为 token尝试转换成你要的类型返回 or 报错成功就返回结果失败就抛出异常告诉你“格式不对”。举个例子- 你输入hello 123 3.14- 调用顺序-sc.next()→ 得到hello-sc.nextInt()→ 得到123-sc.nextDouble()→ 得到3.14整个过程就像流水线作业干净利落。常见方法实战详解哪些是你必须掌握的下面这几个方法几乎覆盖了你在练习题和小项目中 90% 的输入需求。我们一个个来看配上真实场景说明。✅next()读下一个“单词”它适合做什么读取不包含空格的单个词比如用户名、商品名、状态码等。示例代码Scanner sc new Scanner(System.in); System.out.print(请输入用户名); String username sc.next(); System.out.println(欢迎你 username);注意事项 ⚠️遇到空格就停下如果你输入的是Alice Smithnext()只能拿到Alice后面的会被留在缓冲区。不会读空行或纯空白。建议使用时机当你明确知道输入项之间用空格分开并且每个字段本身不含空格时。✅nextLine()读一整行它能解决什么痛点当你需要读一句话、一段描述、地址信息这类可能带空格的内容时nextLine()是唯一选择。示例代码System.out.print(请输入个人简介); String bio sc.nextLine(); System.out.println(你的简介是 bio);经典陷阱 很多人发现明明写了nextLine()却没等我输入就跳过去了原因往往出在这段代码上int age sc.nextInt(); // 用户输入 25 后回车 String city sc.nextLine(); // 这里直接得到空字符串问题在哪nextInt()只读走了25但没有吃掉后面的换行符\n。于是nextLine()立刻看到这个\n认为“哦有一行啊”马上返回一个空串。解决方案 ✅在nextInt()之后加一次“清道夫”操作int age sc.nextInt(); sc.nextLine(); // 清除残留的换行 String city sc.nextLine(); // 正常读取城市名️最佳实践口诀“先读数后读行中间一定清一下。”✅nextInt()/nextDouble()专为数字准备的方法支持哪些类型方法返回类型nextInt()intnextLong()longnextFloat()floatnextDouble()doublenextBoolean()boolean示例录入学生信息System.out.print(请输入年龄); int age sc.nextInt(); System.out.print(请输入身高米); double height sc.nextDouble(); System.out.printf(该学生 %d 岁%.2f 米高\n, age, height);危险提示 ❗如果用户不小心输入了abc或12a程序会立刻崩溃报错Exception in thread main java.util.InputMismatchException所以在正式项目中不能裸奔调用这些方法。✅hasNextInt()等判断方法让你的程序更健壮与其等程序炸掉不如提前问一句“下一个真的是整数吗”这就是hasNextXXX()系列方法的价值。实战代码安全读取整数int number 0; while (true) { System.out.print(请输入一个整数); if (sc.hasNextInt()) { number sc.nextInt(); break; } else { System.out.println(错误请输入有效的数字); sc.next(); // 清除非法输入防止死循环 } } System.out.println(成功获取数字 number);关键点解析hasNextInt()不会移动指针只是“看看前面是不是整数”如果不是就用sc.next()把那个垃圾字符串拿走避免卡住循环等待直到输入合法为止。‍ 这种写法在 OJ 刷题、考试系统、命令行工具中非常常见属于“防御性编程”的基础技能。✅useDelimiter()自定义分割规则默认情况下Scanner把任何空白当作分隔符。但有时候我们需要处理 CSV 数据、日志文件或其他特殊格式。场景示例解析逗号分隔的学生数据假设我们有这样一段数据张三,25,北京想分别提取姓名、年龄、城市怎么办String data 张三,25,北京; Scanner sc new Scanner(data).useDelimiter(,); String name sc.next(); int age sc.nextInt(); String city sc.next(); System.out.println(姓名 name); System.out.println(年龄 age); System.out.println(城市 city); sc.close();更高级玩法支持正则表达式例如sc.useDelimiter(\\|\\|); // 使用 || 作为分隔符 sc.useDelimiter(\\s*,\\s*); // 忽略逗号前后的空格 提示在处理配置文件或批量导入数据时这项能力特别有用。实际应用场景做一个简单的学生成绩管理系统让我们把上面学到的知识串起来做个实用的小程序。import java.util.ArrayList; import java.util.Scanner; class Student { String name; int score; Student(String name, int score) { this.name name; this.score score; } } public class GradeRecorder { public static void main(String[] args) { Scanner sc new Scanner(System.in); ArrayListStudent students new ArrayList(); System.out.println( 学生成绩录入系统 ); while (true) { System.out.print(输入学生姓名输入 quit 退出); String name sc.next(); if (quit.equals(name)) break; System.out.print(请输入成绩); while (!sc.hasNextInt()) { System.out.print(请输入有效数字); sc.next(); // 清除错误输入 } int score sc.nextInt(); students.add(new Student(name, score)); System.out.println(已保存 name - score 分); } // 输出统计结果 System.out.println(\n共录入 students.size() 名学生); for (Student s : students) { System.out.println(s.name : s.score 分); } sc.close(); // 记得关闭资源 } }这个程序展示了什么如何混合使用next()和nextInt()如何结合hasNextInt()实现容错输入如何通过循环实现持续交互最后别忘了sc.close()否则可能导致资源泄漏。使用建议与避坑指南问题推荐做法忘记关闭 Scanner每次创建后务必调用close()尤其是在处理文件时nextInt() nextLine() 错乱在数值读取后手动调用一次nextLine()清空缓冲区异常输入导致崩溃优先使用hasNextXXX()做预检提升用户体验大数据量输入性能差OJ 刷题时若超时考虑改用BufferedReader StringTokenizer多线程环境下使用Scanner 不是线程安全的多个线程不要共用同一个实例⚖️权衡之道对初学者来说Scanner的简洁性和可读性远胜于性能损耗。只有当你面对百万级数据输入或高并发服务时才需要考虑更底层的方案。写在最后掌握的不只是 API是一种思维方式学习Scanner的意义绝不仅仅是记住几个方法名。它教会我们的是一种结构化的输入处理思维模式输入 → 验证 → 转换 → 使用这种模式贯穿于所有应用程序开发之中。无论是 Web 表单提交、API 参数校验还是数据库导入脚本本质上都是在重复这个流程。当你熟练掌握了Scanner你就迈出了独立编写完整交互式程序的第一步。下一步你可以尝试把输入源换成文件new Scanner(new File(data.txt))结合try-catch处理异常尝试封装一个通用的输入工具类路很长但从今天开始你已经站在了正确的起点上。如果你在练习过程中遇到了其他奇怪的问题比如“为什么我的 nextLine 总是空”或者“怎么一次性读多个数字”欢迎留言讨论我们一起解决。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

电商网站建设的内容汕头房地产网

在二零二五年的智能手机市场当中,折叠屏设备已然从探索性产品朝着成熟迈进,技术的迭代以及成本的优化,致使兼具大屏体验跟便携性的折叠屏手机在价位方面变得更为亲民,给消费者予以了丰富的选择。在众多产品里面,怎样在…

张小明 2026/1/7 18:14:33 网站建设

怀仁建设局网站成品源码网站

技术博客引流实操:用高质量内容吸引潜在客户购买Token 在AI技术加速落地的今天,一个现实问题摆在开发者面前:如何让复杂的大模型能力被更多人“看见”并“用起来”?我们见过太多开源项目因上手门槛高、文档晦涩而无人问津。但如果…

张小明 2026/1/8 3:32:59 网站建设

金融服务网站建设内容买域名价格

阴阳师百鬼夜行脚本配置优化指南 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 请基于阴阳师自动化脚本项目,撰写一篇技术指南文章,重点介绍百鬼夜行功能…

张小明 2026/1/7 20:13:57 网站建设

深圳平台网站开发wordpress 内容管理 模版

免费获取:终极Opus音频测试文件完整包 【免费下载链接】Opus格式音频测试文件下载 探索Opus格式音频的魅力!本项目提供四份高质量的Opus音频测试文件,每份文件均为48k采样率的立体声,时长约2分钟,大小仅2MB。这些文件专…

张小明 2026/1/7 20:17:06 网站建设

凡科是免费做网站吗做机械有什么兼职网站

Jellyseerr媒体请求系统:从零开始的完整部署指南 【免费下载链接】jellyseerr Fork of overseerr for jellyfin support 项目地址: https://gitcode.com/GitHub_Trending/je/jellyseerr Jellyseerr是一款专为Jellyfin媒体服务器设计的现代化请求管理工具&…

张小明 2026/1/8 20:37:32 网站建设

网站建设 淄博国家网站域名

导语 【免费下载链接】jukebox-5b-lyrics 项目地址: https://ai.gitcode.com/hf_mirrors/openai/jukebox-5b-lyrics OpenAI最新发布的Jukebox-5B-Lyrics模型将大语言模型与音乐生成技术深度融合,通过文本理解与旋律创作的双向驱动,重新定义了AI音…

张小明 2026/1/8 17:33:43 网站建设