创建一个对数组进行平方的程序?

时间:2015-12-10 23:20:17

标签: arrays

所以我试图创建一个带有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

有任何帮助吗?我无法弄清楚发生了什么

1 个答案:

答案 0 :(得分:1)

ij是您从文本文件中读取的固定值。由于i2,因此数组具有索引0,1,并且调用array[i]array[2],其超出范围并引发错误。

要填充数组的不同部分,您需要使用循环变量yx

array[y][x] = input.nextInt();

您的squarearray代码需要进行相同的更改。

(提示:表示某些内容的变量名称,如totalNumberOfRows可能会让这很容易看到。)