如何从标准输入打印二维数组,其中我知道行大小,但不知道列大小?
标准输入的第一行将是行大小,接下来的几行将是行数,其中列的每个元素的输入以空格分隔。 例如
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/