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

如何通过用户输入构建二维数组(直至输入FINISH),无需ArrayList

动态二维数组输入实现(直到输入FINISH)

如果觉得ArrayList逻辑复杂,可以用手动数组扩容的方式实现,逻辑直白,无需依赖集合类;如果用Python的话,原生列表的动态特性直接就能搞定,更简单。

Java 实现(手动扩容)

核心思路:用初始长度较小的二维数组存储每行数据,当数组存满时手动扩容,直到输入"FINISH"停止,最后裁剪成实际长度的二维数组。

import java.util.Scanner;

public class Dynamic2DArrayInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 初始化行容器,初始长度设为2,后续按需扩容
        String[][] rowContainer = new String[2][];
        int currentRowNum = 0;

        while (true) {
            System.out.print("输入一行数据(输入FINISH结束):");
            String inputLine = scanner.nextLine().trim();

            // 触发终止条件
            if ("FINISH".equalsIgnoreCase(inputLine)) {
                break;
            }

            // 将单行输入拆分为一维数组(按空格分隔,支持多空格)
            String[] singleRow = inputLine.split("\\s+");

            // 容器已满,执行扩容(容量翻倍)
            if (currentRowNum == rowContainer.length) {
                String[][] newContainer = new String[rowContainer.length * 2][];
                System.arraycopy(rowContainer, 0, newContainer, 0, rowContainer.length);
                rowContainer = newContainer;
            }

            // 存入当前行
            rowContainer[currentRowNum] = singleRow;
            currentRowNum++;
        }

        // 裁剪为实际行数的二维数组(可选,移除末尾空引用)
        String[][] final2DArray = new String[currentRowNum][];
        System.arraycopy(rowContainer, 0, final2DArray, 0, currentRowNum);

        // 验证输出
        System.out.println("\n最终二维数组:");
        for (String[] row : final2DArray) {
            for (String elem : row) {
                System.out.print(elem + " ");
            }
            System.out.println();
        }

        scanner.close();
    }
}

关键说明

  • 手动扩容用System.arraycopy实现,逻辑透明,比ArrayList的自动扩容更直观。
  • 支持忽略大小写的终止输入(输入"finish"也能结束)。
  • 可以修改split的参数来更换分隔符(比如split(",")支持逗号分隔)。

Python 实现(极简版)

Python的列表本身就是动态结构,直接追加元素即可,无需手动管理扩容,逻辑更简单:

import sys

result = []
print("输入一行数据(输入FINISH结束):")
for line in sys.stdin:
    line = line.strip()
    if line.upper() == "FINISH":
        break
    # 拆分当前行并加入结果
    result.append(line.split())

# 打印结果
print("\n最终二维数组:")
for row in result:
    print(" ".join(row))

内容的提问来源于stack exchange,提问作者Jay-23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:48:24