方矩阵

时间:2015-08-30 16:01:37

标签: java arrays matrix

我需要编写一个程序,在用户输入行和列时应输出以下内容。以下示例适用于4x4矩阵:

1   5   9   13

2   6   10  14

3   7   11  15

4   8   12  16

仍然是初学者并且发现那些阵列真的很难。

它适用于下面的代码,但我不确定是否允许这样填写 - 列和行。

我无法找到合作方式:

for (int i = 0; i < rows; i++){

    for (int j = 0; j < columns; j++){

我使用的代码:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Please enter your array rows: ");
    int rows = scanner.nextInt();

    System.out.println("Please enter your array columns: ");
    int columns = scanner.nextInt();

    int[][] array = new int[rows][columns];

    int counter = 0;
    for (int j = 0; j < columns; j++){
        for (int i = 0; i < rows; i++) {
            counter++;
            array[i][j]=counter;
        }
    }

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            System.out.print(array[i][j] + " ");
        }
        System.out.println();
    }
}

3 个答案:

答案 0 :(得分:2)

您想在这里使用的技巧是使用函数来计算给定单元格的值。该函数相对容易....对于每一行,值增加行数。例如,有4行,因此每行中的值增加4 ..... 1, 5, 9, 13, ....

因此,您的代码可以简化为:

for (int r = 0; r < rows; r++) {
    for (int c = 0; c < columns; c++) {
        System.out.print((r + 1 + (c * rows)) + " ");
    }
    System.out.println();
}

不需要任何阵列或临时存储等。

重申一下,每个单元格的值是行(从索引1开始,而不是0)加上&#34;偏移&#34;基于列号(从0开始)。

您可以在此处看到它:http://ideone.com/RqPgbN

答案 1 :(得分:1)

按照您的方式填充阵列没有问题,这是完全合法的。首先按行填充它不会产生任何真正的区别。

如果您真的希望以行为首,以下是一种方式:

int[][] array = new int[rows][columns];
for(int i = 0; i < rows, i++) {
    for(int j = 0; j < columns; j++) {
        array[i][j] = j * rows + i + 1;
    }
}

答案 2 :(得分:-2)

试试这段代码: -

int counter = 0;
    for (int j = 0; j < rows; j++){
        for (int i = 0; i < columns; i++) {
int temp = scanner.nextInt();
            array[i][j]=temp;
        }
    }

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            System.out.print(array[i][j] + "\t");
        }
        System.out.println();
    }