java - 来自标准输入的二维数组,无需知道列大小

标签 java multidimensional-array

如何从标准输入打印二维数组,其中我知道行大小,但不知道列大小?

标准输入的第一行将是行大小,接下来的几行将是行数,其中列的每个元素的输入以空格分隔。 例如

3
1 2 3
3 4 5
6 9 3

这就是我正在尝试使用我的代码

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int rows = sc.nextInt(); // Number of rows
        int[][] arr = new int[rows][];
        for(int i = 0; i < rows; i++){

        }
}

最佳答案

如果您想要列值, 那么你需要分割每一行。 当你分割线时,你就会知道列数。 例如:

public static void main(String[] args) {
    String input = "3\n" +
            "1 2 3\n" +
            "3 4 5\n" +
            "6 9 3\n";
    Scanner scanner = new Scanner(input);

    int rows = scanner.nextInt();
    scanner.nextLine();

    int[][] arr = new int[rows][];

    for (int i = 0; i < rows; ++i) {
        String line = scanner.nextLine();
        arr[i] = lineToIntArray(line);
    }
}

private int[] lineToIntArray(String line) {
    String[] cols = line.split(" ");
    int[] ints = new int[cols.length];
    for (int i = 0; i < cols.length; ++i) {
        ints[i] = Integer.parseInt(cols[i]);
    }
    return ints;
}

或使用 Java 8 的 lineToIntArray:

private int[] lineToIntArray(String line) {
    return Arrays.asList(line.split(" ")).stream().mapToInt(Integer::parseInt).toArray();
}

关于java - 来自标准输入的二维数组,无需知道列大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33067690/

相关文章:

java - Xamarin Android 绑定(bind)到继承通用类型的 Java 类型

不同子网上的 2 台主机之间的 Java 套接字

java - 无法弄清楚为什么我不断收到 com.mongodb.MongoSocketReadException : Prematurely reached end of stream

Javascript Concat 多维数组

php - 在具有多个条件的PHP中对多维数组进行排序

arrays - 在二维数组 NxN Swift 上创建、随机填充和搜索元素

c - 如何使用 MPI 散布二维数组?

java - 如何使用 selenium 和 junit 测试多个浏览器(版本)

Java:查找字符串之间的匹配项

java - 如何在矩形输出中显示二维数组?