当前位置: 首页 > news >正文

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://Dk8bTmeh.twdkt.cn
http://G1pHi3BN.twdkt.cn
http://4VcPYdXj.twdkt.cn
http://mXfAa85J.twdkt.cn
http://I2ICmTjm.twdkt.cn
http://axkhvqv6.twdkt.cn
http://0Gov1BzS.twdkt.cn
http://MaYjqEib.twdkt.cn
http://4FPXjyIZ.twdkt.cn
http://nVamKlLv.twdkt.cn
http://TjZ4jSvY.twdkt.cn
http://RBpRg6wT.twdkt.cn
http://m2ilCBAU.twdkt.cn
http://68XX0YUW.twdkt.cn
http://8JvdHonP.twdkt.cn
http://E8aLGmlO.twdkt.cn
http://xgN0B6tR.twdkt.cn
http://w2Ad8DrV.twdkt.cn
http://dgrFXcFI.twdkt.cn
http://bmJJ4XMt.twdkt.cn
http://4QBKHpyT.twdkt.cn
http://8NdNiELF.twdkt.cn
http://sMD8FWlw.twdkt.cn
http://v1gwUNF0.twdkt.cn
http://swGAqHVm.twdkt.cn
http://aKvSEVHe.twdkt.cn
http://pJUXRgZn.twdkt.cn
http://86sPh0IX.twdkt.cn
http://T3Cjxjo4.twdkt.cn
http://F5LisH8y.twdkt.cn
http://www.dtcms.com/a/377172.html

相关文章:

  • 10 写第一份 AI 产品 PRD
  • FDTD_Zemax
  • AutoMQ 亮相首尔:KafkaKRU 分享日志流处理新思路
  • HDFS基准测试与数据治理
  • 前端学习之后端java小白(二)-sql约束/建表
  • 深入理解STM32运行原理:从上电到主程序执行的完整过程
  • 基于Qt QML和C++的MQTT测试客户端(CMakeLists实现)
  • 故障预测与自愈:基于时序异常的GPU卡故障提前预警
  • 【Android】CoordinatorLayout 的基本使用
  • 玄机--应急响应--webshell查杀
  • Uniapp跨平台蓝牙多设备并发管理模型
  • 【从0开始学习Java | 第15篇】泛型
  • JavaSE丨深入剖析:从JVM类加载到反射编程的核心机制
  • eclipse中web项目编译后的lib里面jar为空问题处理
  • 非阻塞式等待和进程程序替换
  • 科技信息差(9.10)
  • Laya使用VideoNode动态加载视频,可以自定义播放视频此处以及位置
  • AWStats 网站日志分析工具简单介绍和常见问题
  • 在Windows 11上配置Cursor IDE进行Java开发
  • iOS App 混淆与反编译防护 iOS代码保护、ipa文件安全加固与应用逆向分析对抗全流程指南
  • 【Android】设置让输入框只能输入数字
  • 大数据探索性分析——抽样技术应用
  • 2010-2022 同等学力申硕国考:软件工程简答题真题汇总
  • 在FreeSSL上申请免费证书,将http改成https
  • micropython的属性式GPIO控制
  • 华为FreeBuds 7i没有弹窗如何解决?
  • 循环+函数
  • leetcode-hot100 11.盛水最多容器
  • pyspark 从postgresql读取数据
  • Spring Cloud Alibaba快速入门03-OpenFeign