You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现多行批量输入并添加行号,空输入退出,求代码调整

解决Java命令行多行输入并添加行号的问题

嘿,我来帮你理清这个问题!你想要在Java命令行里处理多行输入,每行加上the line number is :标识,输入空行就退出对吧?刚好可以帮你对比下BufferedReader和Scanner的用法,给你最适合的解决方案~

首选方案:用BufferedReader实现

BufferedReader是处理字符输入流的利器,读取整行文本的效率很高,特别适合多行输入的场景。这里给你写好完整的可运行代码,还做了资源自动关闭的优化:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MultiLineInputHandler {
    public static void main(String[] args) throws IOException {
        // 用try-with-resources自动关闭资源,不用手动写close()
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            String inputLine;
            int lineCount = 1;

            System.out.println("请输入多行文本(输入空行即可退出程序):");

            // 循环读取每一行,直到输入流结束或空行
            while ((inputLine = reader.readLine()) != null) {
                // 检测到空行就退出循环
                if (inputLine.isEmpty()) {
                    break;
                }
                // 按要求格式化输出
                System.out.printf("the line number is : %d -> %s%n", lineCount, inputLine);
                lineCount++;
            }
        }
        System.out.println("程序已退出");
    }
}

代码关键说明:

  • BufferedReader.readLine():每次读取控制台的一整行内容,返回null表示输入流结束(比如按Ctrl+D/Unix或Ctrl+Z/Windows)。
  • try-with-resources:Java 7+的特性,会自动关闭实现了AutoCloseable的资源,避免手动关闭时可能出现的遗漏。
  • 空行判断:用inputLine.isEmpty()检测用户是否输入了空行,满足条件就退出循环。

用Scanner实现的备选方案

如果你更习惯用Scanner,也可以实现需求,但需要注意设置正确的分隔符,让它按行读取:

import java.util.Scanner;

public class MultiLineScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 设置分隔符为换行符,确保nextLine()读取完整的一行
        scanner.useDelimiter("\n");
        int lineCount = 1;

        System.out.println("请输入多行文本(输入空行即可退出程序):");

        while (scanner.hasNextLine()) {
            String inputLine = scanner.nextLine();
            if (inputLine.isEmpty()) {
                break;
            }
            System.out.printf("the line number is : %d -> %s%n", lineCount, inputLine);
            lineCount++;
        }

        scanner.close();
        System.out.println("程序已退出");
    }
}

两种工具的对比:

  • BufferedReader:属于IO流体系,读取文本的效率更高,适合纯文本行的批量读取,代码更简洁直接。
  • Scanner:更擅长解析输入(比如读取整数、浮点数等结构化数据),但处理纯文本行时需要额外设置分隔符,效率略低于BufferedReader。

所以如果你的需求只是读取多行文本并添加行号,优先选BufferedReader的方案就好啦~

内容的提问来源于stack exchange,提问作者Matthew Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:00:40