所以我试图创建一个带有2D数组的程序,然后返回相同的数组,每个元素都是它的正方形...例如
1 2 3
4 5 6
应该成为
1 4 9
16 25 36
这是我的代码:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class matrixReader {
public static void main(String args[]) throws FileNotFoundException {
Scanner input = new Scanner(new File ("src/matrix"));
File output = new File("src/output");
int i = input.nextInt();
int j = input.nextInt();
int[][] array = new int[i][j];
while (input.hasNextInt()) {
for (int y = 0; y < i; y++) {
for (int x = 0; x < j; x++) {
array[i][j] = input.nextInt();
}
}
}
int[][] squareArray = new int[i][j];
for (int y = 0; y < i; y++) {
for (int x = 0; x < j; x++) {
squareArray[i][j] = (int) Math.pow(array[i][j], 2);
}
}
PrintWriter printOutput = new PrintWriter(output);
for (int y = 0; y < i; y++) {
for (int x = 0; x < j; x++) {
printOutput.print(squareArray[i][j]);
}
}
}
}
问题是它在第一次获取输入时为array [i] [j] = input.nextInt()显示indexOutOfBoundsException。我不知道我的文本文件是否搞砸了,或者它是否与我编写代码的方式有关。我的文本文件应该在一行上显示i,在下一行显示j,然后在一行上显示所有数组编号,如下所示:
2
3
1 2 3 4 5 6
有任何帮助吗?我无法弄清楚发生了什么
答案 0 :(得分:1)
i
和j
是您从文本文件中读取的固定值。由于i
为2
,因此数组具有索引0,1
,并且调用array[i]
为array[2]
,其超出范围并引发错误。
要填充数组的不同部分,您需要使用循环变量y
和x
。
array[y][x] = input.nextInt();
您的squarearray代码需要进行相同的更改。
(提示:表示某些内容的变量名称,如totalNumberOfRows
可能会让这很容易看到。)