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
相关产品推荐
相关产品推荐

