打印2个数组,例如我的作业矩阵

问题描述 投票:0回答:3

我希望我的输出像这样如果用户输入3:不使用二维数组

     1  2  3   

1    1  2  3
2    1  4  6  
3    3  6  9

到目前为止我的代码

public void matrixmutilplication() {
    String thenumberofmatrix = JOptionPane.showInputDialog(null, "Enter the number of column and rows  ");
    int i = Integer.parseInt(thenumberofmatrix);

    int[] cloumnarray = new int[i];
    int[] rowarray = new int[i];

    for (int z = 0; z <= i - 1; z++) {
        cloumnarray[z] = z + 1;
        rowarray[z] = z + 1;
    }

    for (int j = 0; j < i; j++) {
        System.out.println(cloumnarray[j] * rowarray[j]);
    }
}

我尝试了其他选项,但无法正常使用。

java
3个回答
1
投票
public static void matrixmutilplication() {
    String thenumberofmatrix = JOptionPane.showInputDialog(null, "Enter the number of column and rows  ");
    int i = Integer.parseInt(thenumberofmatrix);

    for (int a = 0; a <= i; a++) {
        for (int b = 0; b <= i; b++) {
            // top corner, don't print nothing
            if (a == 0 && b == 0)   System.out.print("\t");
            // top row 0-1, 0-2, 0-3 etc... just 1,2,3...
            else if (a == 0)  {
                System.out.print(b + "\t");
                // last line, print extra line break
                if (b == i) 
                    System.out.print("\n");
            }
            // first column 1-0, 2-0, 3-0... just a + space (tabulator)
            else if (b == 0)        System.out.print(a + "\t");
            // any other cases, are candidates to multiply and give result
            else                    System.out.print(a*b + "\t");
        }
        //look this is out of scope of nested loops, so, 
        // in each a iteration, print line break :)
        System.out.print("\n");
    }
}

public static void main(String[] args) throws Exception {
    matrixmutilplication();
}

输出(3)

    1   2   3   

1   1   2   3   
2   2   4   6   
3   3   6   9   

输出(5)

    1   2   3   4   5   

1   1   2   3   4   5   
2   2   4   6   8   10  
3   3   6   9   12  15  
4   4   8   12  16  20  
5   5   10  15  20  25  

但是(对我来说,问题是数字不是按自然顺序填充的,因此,要实现您的目标,正如您的演示中一样,将需要这样的填充]

public static void matrixmutilplication() {
    String thenumberofmatrix = JOptionPane.showInputDialog(null, "Enter the number of column and rows  ");
    int i = Integer.parseInt(thenumberofmatrix);

    for (int a = 0; a <= i; a++) {
        for (int b = 0; b <= i; b++) {
            if (a == 0 && b == 0)   System.out.print("\t");
            else if (a == 0)  {
                System.out.print(String.format("%3s", b));
                if (b == i) 
                    System.out.print("\n");
            }
            else if (b == 0)        System.out.print(a + "\t");
            else                    System.out.print(String.format("%3s", a*b));
        }
        System.out.print("\n");
    }
}

public static void main(String[] args) throws Exception {
    matrixmutilplication();
}

输出(7)

      1  2  3  4  5  6  7

1     1  2  3  4  5  6  7
2     2  4  6  8 10 12 14
3     3  6  9 12 15 18 21
4     4  8 12 16 20 24 28
5     5 10 15 20 25 30 35
6     6 12 18 24 30 36 42
7     7 14 21 28 35 42 49

看起来不错:)


-1
投票

因此,这应该非常简单。

public void matrixmutilplication() {
    String thenumberofmatrix = JOptionPane.showInputDialog(null, "Enter the number of column and rows  ");
    int i = Integer.parseInt(thenumberofmatrix);

    for (int a = 0; a < i; a++) {
        for (int b = 0; b < i; b++) {
            System.out.print(a*b + "\t");
        }
        System.out.print("\n");
    }
}

-1
投票

[无论何时使用涉及两个数组的矩阵(特别是如果您要解决涉及模式的问题时,都希望像这样嵌套for循环:

for(int row = 0; row < numSelected; row++) {
    for(int col = 0; col < numSelected; col++) {
        ...
    }
}

这样,将覆盖矩阵中的每个单元格。现在使用它,您可以尝试将row索引和col索引相乘并将其存储到正确的单元格中。

© www.soinside.com 2019 - 2024. All rights reserved.