Java 如何在没有空白的情况下通过输入字符串设置2维数组?
这是我的代码:Java 如何在没有空白的情况下通过输入字符串设置2维数组?,java,Java,这是我的代码: Scanner sc = new Scanner(System.in); int size = sc.nextInt(); String[][] s = new String[size][size]; for (int row = 0; row < s.length; row++) { for (int col = 0; col < s[row].length; col++) { s[row][
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
String[][] s = new String[size][size];
for (int row = 0; row < s.length; row++) {
for (int col = 0; col < s[row].length; col++) {
s[row][col] = sc.next();
}
}
for (int row = 0; row < s.length; row++) {
for (int col = 0; col < s[row].length; col++) {
System.out.print(s[row][col] + " ");
}
System.out.println();
}
输出如下所示:
a b c
a b c
a b c
3
abc
abc
abc
3
abc
abc
abc
3
abc
abc
abc
所以我想知道当我这样输入时,如何更改代码以获得相同的输出:
a b c
a b c
a b c
3
abc
abc
abc
3
abc
abc
abc
3
abc
abc
abc
试试这个
int size = sc.nextInt();
String[][] s = new String[size][];
for (int row = 0; row < s.length; row++) {
s[row] = sc.next().split("");
}
for (int row = 0; row < s.length; row++) {
for (int col = 0; col < s[row].length; col++) {
System.out.print(s[row][col] + " ");
}
System.out.println();
}
int size=sc.nextInt();
字符串[][]s=新字符串[大小][];
对于(int row=0;row
java.util.Scanner.next()方法查找并返回来自此扫描仪的下一个完整令牌。完整标记的前面和后面是与分隔符模式匹配的输入。因此,扫描器使用分隔符模式将其输入拆分为标记,默认情况下,分隔符模式与空白匹配。
您必须使用某种分隔符。例如,您可以将分隔符设置为“,”
Scanner sc = new Scanner(System.in);
sc.useDelimiter(",");
那么您的输入应该是这样的:
3,
a,b,c,
a,b,c,
a,b,c,
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\\n");
int size = sc.nextInt();
String[][] s = new String[size][size];
for (int row = 0; row < s.length; row++) {
String input = sc.next();
for (int col = 0; col < s[row].length; col++) {
s[row][col] = String.valueOf(input.toCharArray()[col]);
}
}
for (int row = 0; row < s.length; row++) {
for (int col = 0; col < s[row].length; col++) {
System.out.print(s[row][col] + " ");
}
System.out.println();
}
}
您的输出将是:
a b c
a b c
a b c
在您的情况下,如果您希望像这样接受输入:
a b c
a b c
a b c
3
abc
abc
abc
3
abc
abc
abc
3
abc
abc
abc
然后一个接一个地提取字符,你不能这样做,因为你必须指定一些分隔符,正如我所说的,如果你不这样做,默认的分隔符将被提取
但是,您可以编写一个变通代码,如下所示:
3,
a,b,c,
a,b,c,
a,b,c,
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\\n");
int size = sc.nextInt();
String[][] s = new String[size][size];
for (int row = 0; row < s.length; row++) {
String input = sc.next();
for (int col = 0; col < s[row].length; col++) {
s[row][col] = String.valueOf(input.toCharArray()[col]);
}
}
for (int row = 0; row < s.length; row++) {
for (int col = 0; col < s[row].length; col++) {
System.out.print(s[row][col] + " ");
}
System.out.println();
}
}
您应该看到以下输出:
a b c
a b c
a b c
嗯,这是最简单的方法。如果需要,它还允许每行具有不同的长度
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
// clear the previous new line
sc.nextLine();
//initialize the number of rows.
String[][] s = new String[size][];
// enter the rows
for (int rows = 0; rows < size; rows++) {
String row = sc.nextLine();
// split between each character
s[rows] = row.split("");
}
//print the matrix
for (String[] row : s) {
System.out.println(String.join(" ",row));
}
印刷品
a b c
d e f
g h i
您不需要将每一行项目复制到矩阵中。只需将split的输出分配给
s[row]
。这也意味着您可以将s
初始化为String[][]s=新字符串[size][]代码>@WJS谢谢。