您好我是初学者所以请不要使用任何复杂的东西。 这是我的意思的SS。 http://prntscr.com/1ffec0 截至目前,不要担心垂直和水平数字显示它是什么列和行号。 我有我的代码,但我对如何处理它以及如何使它们成倍增加感到困惑。
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();
}
}
}
答案 0 :(得分: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中打印的值,成对,如(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,或者其他什么。这是微不足道的,我相信你能把它放在一起。
答案 1 :(得分:0)
用i * j改变i + j 顺便说一句,你只打印矩阵的一半
答案 2 :(得分: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)和“reservice”为它提供空间!
答案 3 :(得分: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 + " ");