Java如何读取用户输入的多行值并分别存入不同数组
原有代码问题分析
Scanner类的next()、nextInt()方法默认会跳过所有空白分隔符(空格、换行符、制表符等),所以!input.next().equals('\n')逻辑永远无法匹配到换行符,循环不会正常退出- 缺少按行读取输入的逻辑,无法区分不同行的数值归属
正确实现方案
核心思路是先用nextLine()读取整行内容,再把每行内容按空格拆分后转成整数数组,可直接按索引获取对应行的独立数组。
import java.util.Scanner; public class ReadLineToArray { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 已知输入行数为2的场景 int lineCount = 2; int[][] allArrays = new int[lineCount][]; for (int i = 0; i < lineCount; i++) { // 读取一整行输入 String lineContent = input.nextLine().trim(); // 按任意数量空格拆分得到数字字符串数组 String[] numStrArr = lineContent.split("\\s+"); // 转成整数数组 int[] numArr = new int[numStrArr.length]; for (int j = 0; j < numStrArr.length; j++) { int n = Integer.parseInt(numStrArr[j]); // 保留原有大于0的过滤逻辑 if (n > 0) { numArr[j] = n; } } allArrays[i] = numArr; } // 按需求获取独立数组 int[] array1 = allArrays[0]; int[] array2 = allArrays[1]; // 验证输出 for (int num : array1) { System.out.print(num + " "); } System.out.println(); for (int num : array2) { System.out.print(num + " "); } input.close(); } }
特殊场景适配
- 若不知道输入总行数:可先将每行转换后的数组存入
List<int[]>,所有输入读取完成后再转成二维数组即可 - 若存在空行输入:读取行内容后判断
lineContent.isEmpty(),符合条件则跳过不处理即可
内容的提问来源于stack exchange,提问作者user3541371
相关产品推荐
相关产品推荐

