大家好我试图从输入中读取一个确定要创建的矩阵大小的数字。然后读取所述矩阵并重现它。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int dim = in.nextInt();
char[][] tab = new char[dim][dim];
in.nextLine();
String temp = in.nextLine();
for (int i = 0; i < dim - 1; i++) {
for (int j = 0; j < dim - 1; j++) {
tab[i][j] = temp.charAt(j);
}
temp = in.nextLine();
}
for (int i = 0; i < dim; i++) {
for (int j = 0; j < dim; j++) {
System.out.print(tab[i][j]);
}
System.out.println();
}
}
事情是它忽略了最后一个字符和最后一行。使用此输入进行测试:
4
XXXX
OOO.
....
....
答案 0 :(得分:0)
你的第一个双重for-loop(读取输入到制表符矩阵的那个)应该说i < dim
而不是i < dim - 1
,并且内部的j
同意 - 环
像这样:
for (int i = 0; i < dim ; i++) { //Removed - 1
for (int j = 0; j < dim ; j++) { //Removed - 1
tab[i][j] = temp.charAt(j);
}
temp = in.nextLine();
}
答案 1 :(得分:0)
创建矩阵时循环的边界不正确。你应该做
for (int i = 0; i < dim; i++) {
for (int j = 0; j < dim; j++) {
或
for (int i = 0; i <= dim - 1; i++) {
for (int j = 0; j <= dim - 1; j++) {
但不要混淆两者。选择严格小于界限或小于或等于界限-1。
答案 2 :(得分:0)
你只有一个小问题,你必须去最后一个维度,所以对于一个5的数组,你应该直到4,但在代码中,由于int i = 0; **i < dim - 1**; i++
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int dim = in.nextInt();
char[][] tab = new char[dim][dim];
in.nextLine();
String temp = in.nextLine();
for (int i = 0; i <= dim - 1; i++) {
for (int j = 0; j < dim - 1; j++) {
tab[i][j] = temp.charAt(j);
}
temp = in.nextLine();
}
for (int i = 0; i < dim; i++) {
for (int j = 0; j < dim; j++) {
System.out.print(tab[i][j]);
}
System.out.println();
}
}