Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不知道列大小的标准输入的二维数组_Java_Multidimensional Array - Fatal编程技术网

Java 不知道列大小的标准输入的二维数组

Java 不知道列大小的标准输入的二维数组,java,multidimensional-array,Java,Multidimensional Array,如何从我知道行大小但不知道列大小的标准输入打印二维数组 标准输入的第一行是行大小,接下来的几行是行数,每个列元素的输入用空格分隔。 e、 g 这就是我正在尝试的代码 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int rows = sc.nextInt(); // Number of rows int[][] arr = new int[

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

标准输入的第一行是行大小,接下来的几行是行数,每个列元素的输入用空格分隔。 e、 g

这就是我正在尝试的代码

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++){

        }
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int rows=sc.nextInt();//行数
int[][]arr=新的int[行][];
对于(int i=0;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;
}
忽略第一行

List<String[]> lines = new ArrayList<>();
sc.nextLine(); //skip line 1
while (sc.hasNextLine()) 
    lines.add(sc.nextLine().split(" "));

假设所有行都以1
String
的形式读入
input
,这应该可以工作

Stream.of(input.split("\n")).map(line -> line.split(" ")).toArray(String[][]::new)

但您不能输入超过允许的行数,这会使它继续输入无限行。另外,我给出的示例是一个行大小为3的示例输入。此外,我应该能够完成输入我的数组之前,我可以打印它。
private int[] lineToIntArray(String line) {
    return Arrays.asList(line.split(" ")).stream().mapToInt(Integer::parseInt).toArray();
}
List<String[]> lines = new ArrayList<>();
sc.nextLine(); //skip line 1
while (sc.hasNextLine()) 
    lines.add(sc.nextLine().split(" "));
lines.stream().map(Arrays::toString).forEach(System.out::println);
Stream.of(input.split("\n")).map(line -> line.split(" ")).toArray(String[][]::new)