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

Java中如何读取多行字符串至空行并存入ArrayList?

解决读取多行字符串存入ArrayList时的索引越界问题

嘿,我来帮你搞定这个报错!你遇到的String index out of range: 0错误,本质是代码在处理空行的时候,还在尝试访问一个长度为0的字符串的第0个字符(比如调用了charAt(0)、substring(0)这类方法)——空字符串根本没有索引0,自然就触发异常了。

正确的实现思路

我们需要做的是:循环读取每一行输入,把非空行加入ArrayList,直到用户输入空行(直接按回车)时停止循环。核心是先判断输入的行是否为空,再进行后续操作,避免对空字符串执行索引访问。

完整代码示例

import java.util.ArrayList;
import java.util.Scanner;

public class LineReader {
    public static void main(String[] args) {
        ArrayList<String> inputLines = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入多行内容,输入空行结束:");
        // 循环读取每一行
        while (true) {
            String currentLine = scanner.nextLine();
            // 检测到空行就终止循环
            if (currentLine.isEmpty()) {
                break;
            }
            // 非空行加入列表
            inputLines.add(currentLine);
        }

        scanner.close();

        // 验证结果(可选)
        System.out.println("\n你输入的内容已存入ArrayList:");
        for (String line : inputLines) {
            System.out.println("- " + line);
        }
    }
}

关键注意点

  • 必须用scanner.nextLine()读取整行:scanner.next()会自动跳过空白字符,根本读不到空行,所以一定要用nextLine()来捕获用户直接回车的情况。
  • 用isEmpty()判断空行:这个方法直接检查字符串长度是否为0,完美匹配“直接换行”的空行场景。如果需要忽略全空格的行,可以改成currentLine.trim().isEmpty()。

内容的提问来源于stack exchange,提问作者Mahdi Ghajary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:53:47