-2

我想只用简单的循环和数组创建一个简单的 java 程序。应该是乘法表。

如果行是 3,列是 5,那么它应该显示行、列,并且在矩阵内部它应该给出行和列的乘法。输出应该是这样的。

     1    2    3    4    5
1    1    2    3    4    5
2    2    4    6    8    10
3    3    6    9    12   15

我想用简单的循环创建。我是java新手,所以我无法弄清楚我该怎么做。请告诉我。

我已经完成了代码到这里。

导入 java.util.*;

class cross_multiplication
{

    public static void main(String a[])
        {

        System.out.println("How many rows required? : ");
        Scanner in1 = new Scanner(System.in);
        int num_rows = in1.nextInt();

        System.out.println("How many cols required? : ");
        Scanner in2 = new Scanner(System.in);
        int num_cols = in2.nextInt();

    //int arr1 [] = new int[num_rows]; 
    //int arr2 [] = new int[num_cols];      

        for(int i=0;i<num_rows;i++)
        {
                if (i==0)
                {
                    System.out.print("");
                }
                else
                {
                    System.out.print(i);            
                }
                System.out.print("\t");     

        }


    }
}

谢谢

4

3 回答 3

3

你可以尝试这样的事情:

private static void print(final int[][] table){
    for(int r = 0; r < table.length; r++){
        for(int c = 0; c < table[r].length; c++){
            System.out.printf("%d\t", table[r][c]);
        }
        System.out.println();
    }
}

private static int[][] table(final int rows, final int columns){
    final int[][] array = new int[rows][columns];
    for(int r = 1; r <= rows; r++)
        for(int c = 1; c <= columns; c++)
            array[r-1][c-1] = r * c;
    return array;
}

从上面的代码中,如果你想打印 10x10 乘法表,你可以这样做:

print(table(10, 10));

输出将如下所示:

10x10 输出

于 2013-08-29T03:50:40.743 回答
1

我不会给你答案,但我会给你一些伪代码

您确实正确设置了 2 个循环

Loop x = 1 to 3
    Loop y = 1 to 3
        //Do stuff
    End innerloop
End outerloop

这将在一条直线上打印您的所有解决方案。但是您显然希望它在矩阵中。答案是简单的改变,只需要一行代码。在你的内部循环的每个完整循环之后,你基本上完成了一行乘法(想想为什么)。所以解决方案是在内循环完成运行后,就在转到 x 的下一个外循环值之前,您想要打印一个新行。总而言之,我们有类似的东西:

Loop x = 1 to 3
    Loop y = 1 to 3
        z = x * y
        Print z + " "
    End innerloop
    Print NewLine // "\n" is the way to do that
End outerloop

并尝试

public static void print(int x, int y) {
    for (int i = 1; i <= x; i++) {

        for (int j = 1; j <= y; j++) {

            System.out.print(" " + i * j);
        }
        System.out.println();

    }
}
于 2013-08-29T03:51:14.940 回答
1

要包含标题,您需要检查您是在第 0 行 ( j == 0) 还是第 0 列 ( i == 0)。如何执行此操作的示例:

public static void print(int x, int y) {
  for (int i = 0; i <= x; i++) {
    for (int j = 0; j <= y; j++) {
      if(i==0) { // first row
        if(j>0) {
          System.out.printf("%d\t", j);
        }
        else { // first row, first column: blank space
          System.out.printf("\t");
        }
      }
      else {
        if(j == 0) { // first column
          System.out.printf("%d\t", i); 
        }
        else { // actually in the body of the table - finally!
          System.out.printf("%d\t" i * j);
        }
      }
    }
    System.out.println();
  }
}
于 2013-08-29T04:07:10.683 回答