0

Hi I am a beginner so please don't use any complicated stuff. Here is a SS of what i mean. http://prntscr.com/1ffec0 as of now don't worry about having numbers vertically and horizontally that display what columns and row number it is. I have my code but am totally confused on how to go about it and how to make them multiply.

import java.util.Scanner;

public class test 
{
    public static void main(String[] args)    
    {
        Scanner keyboard = new Scanner (System.in);
        int x=0, y=0;
        System.out.print("Enter rows ");
        x = keyboard.nextInt();
        System.out.print("Enter columns ");
        y = keyboard.nextInt();

        for (int i=1; i<=x; i++) 
        {
            for (int j=1; j<=y; j++)
            {
                System.out.print(" "+i+j);
            }
            System.out.println(); 
        }
    }
}
4

4 回答 4

4

我不会直接给你答案,但我会用一些伪代码帮助你更好地理解这个问题。假设您的 x 范围从 1 变为 3,并且您的 y 范围也从 1 变为 3。

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

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

现在考虑将在 //do stuff 处打印的值,成对打印,例如 (x, y):

(1, 1) , (1, 2), (1, 3), (2, 1), (2, 2) 等直到 (3, 3);

显然您希望显示产品,因此在循环内创建一些变量 z = x * y

//Do stuff:
z = x * y
Print z + " "

打印 z 并留一个空格,因为您想打印下一个值而不是与第一个值相邻。

这将在一条直线上打印您的所有解决方案。但是您显然希望它在矩阵中。答案是简单的改变,只需要一行代码。在你的内循环的每个完整循环之后,你基本上完成了一行乘法(想想为什么)。所以解决方案是在内循环完成运行后,就在转到 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

你完成了。您只需将其放入代码中,并接受用户输入,而不是将范围硬编码为从 1 到 3 或其他任何值。这是微不足道的,我相信你可以把它放在一起。

于 2013-07-14T21:26:09.297 回答
0

将 i+j 更改为 i*j 顺便说一句,您只打印矩阵的一半

于 2013-07-14T21:24:22.097 回答
0

您需要使用“*”而不是“+”吗?

像这样:

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();

    }
}

之后你可能想考虑格式化!?我的建议:考虑最长值的长度(始终是 x*y)并为它“重新服务”足够的空间!

于 2013-07-14T21:29:16.890 回答
0

改变:

System.out.print(" "+i+j);

至:

if ((i + j) <= 9) {
    System.out.print(i + j + "   ");
} else if ((i + j) <= 99) { 
    System.out.print(i + j + "  ");
} else 
    System.out.print(i + j + " ");
于 2018-12-22T20:42:50.017 回答