news 2026/5/25 9:13:29

《Java 100 天进阶之路》 第11篇:Java控制台输入输出语句

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《Java 100 天进阶之路》 第11篇:Java控制台输入输出语句

第11篇:Java控制台输入输出语句

📌系列导航:《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第10篇:Java操作符有哪些? |
➡️ 下一篇:第12篇:Java对象、类、抽象类、构造函数

一、核心知识点

  • System.out输出:print()println()printf()(格式化)
  • Scanner输入:创建、常用方法、关闭
  • nextLine()nextInt()等方法的陷阱
  • 格式化输出:%d%s%f%n
  • 控制台交互程序的标准写法

二、通俗讲解(1分钟开心学)

1. 输出到控制台

  • System.out.print("不换行"):输出后光标留在本行末尾。
  • System.out.println("换行"):输出后光标移到下一行(最常用)。
  • System.out.printf("格式", 参数):类似C语言,可以控制小数位数、宽度等。

2. 从控制台输入

使用Scanner类(需要import java.util.Scanner;):

  • next():读取字符串,以空格/换行作为分隔符(不能读取带空格的字符串)。
  • nextLine():读取一整行,直到换行(能读取空格)。
  • nextInt()nextDouble():读取对应类型的数字。

3. 经典陷阱

nextInt()不会消耗换行符!如果在nextInt()之后立即调用nextLine()nextLine()会读取到残留的换行符,直接返回空字符串。

生活类比
nextInt()就像你只拿走了盘子里的包子,但盘子上留下的油渍(换行符)还在。下一个nextLine()本来想拿一碗汤,结果只拿到油渍。

解决:在nextInt()后加一个scanner.nextLine()吸收换行,再读真正的字符串。

三、实操代码案例 + 场景说明

场景:写一个登录验证小工具,让用户输入用户名和年龄,并输出欢迎信息。

importjava.util.Scanner;publicclassInputOutputDemo{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.print("请输入用户名(可含空格):");Stringname=scanner.nextLine();// 使用nextLine获取整行System.out.print("请输入年龄:");intage=scanner.nextInt();// 读取数字,换行符留在缓冲区// 吸收换行符(重要!)scanner.nextLine();// 消耗掉数字后面的换行System.out.print("请输入城市:");Stringcity=scanner.nextLine();// 格式化输出System.out.printf("用户:%s,年龄:%d,城市:%s%n",name,age,city);scanner.close();}}

演示错误写法(不吸收换行)

Scannersc=newScanner(System.in);System.out.print("数字:");intnum=sc.nextInt();System.out.print("字符串:");Stringstr=sc.nextLine();// 直接读到了换行符,str为空字符串System.out.println("str = ["+str+"]");

四、避坑要点

错误/误区后果正确做法
nextLine()放在nextInt()后面没额外调用读不到想要的字符串加一个scanner.nextLine()吸收换行
忘记import java.util.Scanner编译错误开头加上import
不关闭Scanner资源泄漏(虽程序结束会释放)用完后调用close()
next()读取带空格的姓名只能读到第一个词使用nextLine()
输入类型不匹配(如字符串给nextIntInputMismatchException先判断hasNextInt()

五、面试高频考点

Q1:System.out.println()System.out.print()的区别?

println输出后换行,print不换行。

Q2:next()nextLine()的区别?

next()以空格/换行为分隔符,不读取空格;nextLine()读取整行直到换行,包含空格。

Q3:如何读取控制台密码(不显示输入)?

使用Console类:Console console = System.console(); char[] pwd = console.readPassword();注意System.console()在IDE中可能为null。

六、练习题

  1. 编程:写一个程序,从控制台输入圆的半径(浮点数),输出周长和面积(保留两位小数)。
  2. 陷阱修复:现有代码scanner.nextInt(); String s = scanner.nextLine();为什么s可能是空?怎么改?
  3. 动手:用printf实现一个表格输出,对齐两列数据(使用%-10s%10d)。

📊 你的学习进度

  • 当前:第11篇 / 共44篇 ·第二阶段:核心语法与面向对象(第5~20篇)
  • ✅ 已完成:第1~10篇
  • 📖 正在学:第11篇
  • ⏳ 待学习:第12~44篇

👉 📚 完整目录 & 学习指南 | 🔥 订阅本专栏,不错过每一篇

💡 本专栏每篇都包含:避坑表 + 面试高频考点 + 练习题。每天30分钟,100天拿offer!


👉 下一篇预告

《Java对象、类、抽象类、构造函数》

内容简介:类与对象的关系、构造方法的重载、this关键字、抽象类的定义与使用场景。

💡 学完这篇,你将掌握面向对象编程的基础语法,能独立设计类和对象。

📌《Java 100 天进阶之路 | 从入门到上岗就业》每天一篇,建议收藏 + 关注,一起100天拿offer!
👉 点击关注我,更新后第一时间收到推送!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 9:11:15

百考通一键生成高校标准任务书框架

毕业设计任务书是高校教学流程中不可或缺的正式文件,它不仅是学生研究工作的起点,更是指导教师审核可行性、学院备案监管的重要依据。然而,许多学生在撰写时常常因不熟悉本专业写作范式、技术细节难以准确表达,或找不到权威模板而…

作者头像 李华
网站建设 2026/5/25 9:08:55

ParsecVDisplay终极指南:如何在Windows上免费扩展虚拟显示器

ParsecVDisplay终极指南:如何在Windows上免费扩展虚拟显示器 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 在数字时代,你是否曾因物理显示器数量不足而困…

作者头像 李华
网站建设 2026/5/25 9:01:24

宇树 G1-D + Pico 4 XR 遥操作环境搭建

宇树 G1-D Pico 4 XR 遥操作环境搭建:xr_teleoperate 项目解析与踩坑总结 官方项目地址:https://github.com/unitreerobotics/xr_teleoperate 适用平台:Ubuntu 20.04 / 22.04 适用场景:G1-D Dex3-1 Pico 4 遥操作部署 目录 项…

作者头像 李华
网站建设 2026/5/25 8:58:36

动态目标跨镜无缝接力追踪技术在武警应急处置场景中的应用白皮书

动态目标跨镜无缝接力追踪技术在武警应急处置场景中的应用白皮书编制单位:镜像视界浙江科技有限公司技术资质:国家十四五重点课题研究、镜像视界浙江普陀时空大数据应用技术联合研究院联合研究、河南省电检院权威机构认证版本:V1.0一、前言武…

作者头像 李华
网站建设 2026/5/25 8:52:58

Java SE与Kubernetes微服务:应对在线教育平台的挑战

Java SE与Kubernetes微服务:应对在线教育平台的挑战 在一家大型在线教育公司的面试中,面试官与搞笑的程序员燕双非展开了一场生动的对话。以下是这个过程的真实呈现。第一轮提问 面试官:燕双非,首先,我们谈谈Java SE 8…

作者头像 李华