Java算法题中的输入输出流

在Java算法题中,处理输入输出主要依赖系统流(System.inSystem.out),常用的方法总结如下:

一、输入方法(读取系统输入)

主要通过java.util.Scanner类或BufferedReader类实现,适用于不同场景:

1. Scanner类(简单场景,代码简洁)

最常用的输入工具,支持多种数据类型的直接读取,常用方法:

  • nextInt():读取整数(int
  • nextLong():读取长整数(long
  • nextDouble()/nextFloat():读取浮点数
  • next():读取字符串(以空格/回车为分隔符)
  • nextLine():读取一整行字符串(包括空格)
  • hasNextXxx():判断是否还有对应类型的输入(循环读取时常用)
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();               // 读整数String s = sc.next();               // 读字符串double d = sc.nextDouble();         // 读浮点数// 循环读取多个整数(直到没有输入)while (sc.hasNextInt()) {int num = sc.nextInt();// 处理逻辑}sc.close(); // 建议关闭资源}
}
2. BufferedReader类(高效场景,大输入量)
  • 基于字符流的缓冲输入,速度快于Scanner,适合大规模输入(如十万级数据)
  • 需要配合InputStreamReader转换流使用,且读取后需手动转换数据类型
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 读取一行字符串(返回null表示输入结束)String line = br.readLine();// 读取整数(需手动转换)int num = Integer.parseInt(br.readLine());// 循环读取多行String s;while ((s = br.readLine()) != null) {// 处理每行数据}br.close(); // 关闭资源}
}

二、输出方法(写入系统输出)

主要通过System.out相关方法实现,常用:

1. print() / println()(简单输出)
  • print(x):输出数据x,不换行
  • println(x):输出数据x并换行(最常用)
  • 支持直接输出基本类型、字符串、对象(会自动调用toString()
System.out.print("Hello");   // 输出不换行
System.out.println(123);     // 输出整数并换行
System.out.println("World"); // 输出字符串并换行
2. printf()(格式化输出)
  • 类似C语言的printf,支持格式控制符(如%d整数、%s字符串、%f浮点数等)
  • 适合需要固定格式的输出(如保留小数位、对齐等)
int a = 10;
double b = 3.14159;
System.out.printf("整数:%d,浮点数:%.2f%n", a, b); 
// 输出:整数:10,浮点数:3.14(%n表示换行,跨平台)
3. BufferedWriter类(高效输出,大输出量)
  • 缓冲输出流,速度快于System.out,适合大规模输出
  • 需手动调用flush()刷新缓冲区(或关闭流时自动刷新)
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;public class Main {public static void main(String[] args) throws IOException {BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));bw.write("Hello");   // 写入字符串bw.newLine();        // 换行(跨平台)bw.write(String.valueOf(123)); // 写入整数(需转为字符串)bw.flush(); // 刷新缓冲区(必须调用,否则可能不输出)bw.close(); // 关闭流(会自动刷新)}
}

三、选择建议

  1. 小规模输入输出:优先用Scanner + System.out.println(),代码简洁易写。
  2. 大规模输入(如算法竞赛):用BufferedReader(读)+ BufferedWriter(写),效率更高。
  3. 格式化输出:用System.out.printf(),控制格式更方便。

这些方法基本能覆盖Java算法题中所有输入输出场景,掌握后可高效处理各类数据读写需求。

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

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

相关文章

墨水屏程序

EPD Reader 基于ESP32-C3的电子墨水屏阅读器,支持ap 配网、sntp 时间同步、txt阅读、天气预报、显示节假日信息、农历显示、自动休眠、web配置等功能。这是在另一个项目 一个rust embassy esp32c3 的练习项目-CSDN博客的基础上修改的 。 界面比较粗糙,以…

Git 创建 SSH 密钥

1.生成 SSH 密钥 打开 Git Bash ssh-keygen -t ed25519 -C "your_email@example.com" 把 ”your_email@example.com“ 改成再 github 注册的邮箱 系统会提示您三次输入: 第一个提示:Enter file in which to save the key (/c/Users/86189/.ssh/id_ed25519): 直接…

当前 AI 的主流应用场景

当前AI技术已深度渗透至社会各领域,2025年的主流应用场景呈现出行业垂直化、交互自然化、决策自主化三大特征。以下从六大核心领域展开分析,结合最新技术突破与规模化落地案例,揭示AI如何重塑人类生产生活范式: 一、智能办公与生产力革命 AI正从工具升级为「数字同事」,…

EI会议:第六届电信、光学、计算机科学国际会议(TOCS 2025)

第六届电信、光学、计算机科学国际会议(TOCS 2025)定于11月21-23日在中国南阳举行,本届会议以“电信、光学、计算机科学”为主题,旨在为相关领域的专家和学者提供一个探讨行业热点问题,促进科技进步,增加科…

回归预测 | MATLAB基于GRU-Attention的多输入单输出回归预测

代码是一个基于 MATLAB 的深度学习时间序列预测模型,结合了 GRU(门控循环单元)和自注意力机制(Self-Attention),用于回归预测任务。 一、主要功能 使用 GRU + Self-Attention 神经网络模型对时间序列数据进行回归预测,评估模型在训练集和测试集上的性能,并可视化预测结…

【JavaEE】(24) Linux 基础使用和程序部署

一、Linux 背景知识 Linux 的第一个版本开发者是 Linus,所以部分人会叫“林纳斯”。Linux 只是一个开源的操作系统内核,有些公司/开源组织基于 Linux 内核,配套了不同的应用程序,构成不同的操作系统(比如 vivo、&#…

视觉SLAM第9讲:后端1(EKF、非线性优化)

目标: 1.理解后端的概念; 2.理解以EKF为代表的滤波器后端的工作原理; 3.理解非线性优化的后端,明白稀疏性是如何利用的; 4.使用g2o和Ceres实际操作后端优化。 9.1 概述 9.1.1 状态估计的概率解释 1.后端优化引出 前段…

楼宇自控系统监控建筑变配电系统:功效体现在安全与节能层面

建筑变配电系统是保障建筑电力供应的 “心脏”,负责将外界高压电转化为建筑内设备可使用的低压电,为暖通、照明、电梯等核心系统供电。传统变配电管理依赖人工巡检,不仅存在 “监测滞后、故障难预判” 的安全隐患,还因无法精准调控…

【Docker安装使用常见问题汇总】

文章目录1. wsl update failed: update failed:2.dockerDesktopLinuxEngine: The system cannot find the file specified.3. 中文语言包3.1. 下载中文包3.2 默认路径如下:3.3 备份并替换 app.asar 文件:4. Get "https://registry-1.docker.io/v2/&…

Android面试指南(八)

目录 1、Java语言相关 1.1、String的intern方法 1.2、HashMap的扩容 1.3、Java数组不支持泛型 1.4、泛型类型保留到运行时 1.5、匿名内部类使用的外部变量需要加final 2、Kotlin语言相关 3、设计模式 1、Java语言相关 1.1、String的intern方法 1)、String…

7、Matplotlib、Seaborn、Plotly数据可视化与探索性分析(探索性数据分析(EDA)方法论)

学习目标:掌握数据可视化的原理和工具,培养通过图表洞察数据规律的能力,建立数据驱动的分析思维数据可视化是数据科学的重要组成部分,它将抽象的数字转化为直观的图形,让我们能够快速识别模式、趋势和异常。从基础的柱…

Next系统学习(二)

SSR生命周期与实现详细解答 19. 如果不使用框架,如何从零用React/VueNode.js实现一个简单的SSR应用? React Node.js SSR实现步骤: 项目结构搭建 /project/client - 客户端代码/server - 服务端代码/shared - 共享代码服务端基础设置 // server/index…

零代码入侵:Kubernetes 部署时自动注入 kube-system UID 到 .NET 9 环境变量

在现代化 .net9 应用部署阶段,零代码入侵模式,自动获取 kubernetes 命名空间 kube-system 的 UID,并其作为变量配置到应用。 以下是几种实现方式: 方法一:使用 InitContainer Downward API 您可以通过 Kubernetes 的 …

基于Redis设计一个高可用的缓存

本文为您介绍,如何逐步设计一个基于Redis的高可用缓存。 目录 业务背景 步骤一:写一个最简单的缓存设计 存在的问题:大量冷数据占据Redis内存 解决思路:让缓存自主释放 步骤二:为缓存设置超时时间 存在的问题&a…

从原理到实践:LVS+Keepalived构建高可用负载均衡集群

从原理到实践:LVSKeepalived构建高可用负载均衡集群 文章目录从原理到实践:LVSKeepalived构建高可用负载均衡集群一、为什么需要LVSKeepalived?二、核心原理:Keepalived与VRRP协议1. VRRP的核心思想2. Keepalived的三大功能三、LV…

iOS混淆工具实战 在线教育直播类 App 的课程与互动安全防护

近年来,在线教育直播类 App 已成为学生与培训机构的重要工具。无论是 K12 教育、职业培训,还是兴趣学习,App 中承载的课程视频、题库与互动逻辑都是极高价值的内容资产。 然而,教育直播应用同样面临多重安全风险:课程视…

第2节-过滤表中的行-BETWEEN

摘要: 在本教程中,您将学习如何在 WHERE 子句中使用 PostgreSQL 的 BETWEEN 运算符来检查某个值是否在两个值之间。 PostgreSQL BETWEEN 运算符 BETWEEN运算符是一种比较运算符,如果某个值介于两个值之间,则返回true。 以下是 BETWEEN 运算符…

Windows 11 手动下载安装配置 uv、配置国内源

Windows 11 手动下载安装配置 uv、配置国内源 本文对应的讲解视频链接:https://www.bilibili.com/video/BV1WnYTzZEpW 文章目录Windows 11 手动下载安装配置 uv、配置国内源1. 下载、安装、配置 uv2. 参考信息重要声明: uv 的安装有很多种方式&#xff…

平板热点频繁断连?三步彻底解决

平板反复断开热点连接是一个非常常见且令人烦恼的问题。这通常不是单一原因造成的,而是多种因素叠加的结果。 我们可以从热点发射设备(手机等)、平板本身、以及环境因素三个方面来排查和解决。 一、 热点发射端(通常是手机&#x…

Qt文件操作的学习(三)

一、实现简易文本编辑器 主要用到带菜单栏的窗口,而非单一窗口。QT已经写好相关操作,就不在重新造轮子了功能设计:新建文本文档,打开文件,保存文件,另存为 这次不同于之前直接可以在控件上面右击槽了&…