好的,我正在为我的编程类创建一个程序,我正在尝试这样做,所以当我输入列和行时,它将得到一个显示乘法表的输出。下面是一个可视化示例:printTable(4,6)的示例运行输出:
现在,这是我的代码:
import java.util.Scanner;
public class Pictures {
public static int row;
public static int column;
public static Scanner input = new Scanner(System.in);
public static void main(String[] args){
int x = 1;
int y = 1;
System.out.println("Input Row: ");
row = input.nextInt();
System.out.println("Input Column: ");
column = input.nextInt();
for(x = 1; x < row; x++){
System.out.print(x * y + " ");
for(y = 1 ; y < column; y++){
System.out.print(y * x + " ");
}
System.out.println();
}
}
}
现在,当我输入第5行和第5列时,我的输出如下所示:
1 1 2 3 4
10 2 4 6 8
15 3 6 9 12
20 4 8 12 16
我知道我没有看到一些相当简单的东西,但我只是不明白为什么会这样。如果有人可以提出建议,那将会有很大帮助。
谢谢, 玷污
答案 0 :(得分:4)
出于学习目的,请使用调试器来理解您的代码。
要解决此问题,请删除以下行:
int x = 1;
int y = 1;
并让你的循环像:
for(int x = 1; x < row; x++){
// System.out.print(x * y + " "); // no print needed here
for(int y = 1 ; y < column; y++){
System.out.print(y * x + "\t");
}
System.out.println();
}
答案 1 :(得分:0)
当你这样做时
System.out.print(x * y +“”);
第二次,由于for循环,y = 5。因此2 * 5 = 10。
答案 2 :(得分:0)
如果你想获得4行,你想要显示行1,2,3和4.如果你停止你的循环在&lt; 4(而不是&lt; = 4)你会错过最后一行和列。人们称之为fencepost error 。
尝试这样的事情:
for(int x = 1; x <= row; x++)
此外,第一张打印件还没有良好的y值。您希望x和y都有效,因此只能在内循环内打印。
答案 3 :(得分:0)
for(x = 1; x < row; x++){
System.out.print(x * y + " ");
for(y = 1 ; y < column; y++){
System.out.print(y * x + " ");
}
System.out.println();
}
第一次打印()是不必要的,您需要更改比较,以便row
和column
分别是x和y的有效值(即使用<=
而不是{ {1}}。此外,您还需要使用<
(制表符)来隔开列,而不是"\t"
,以便具有不同位数的数字不会导致列歪曲。这应该产生预期的结果。
" "
使用for(x = 1; x <= row; x++){
for(y = 1 ; y <= column; y++){
System.out.print(y * x + "\t");
}
System.out.println();
}
...
" "
使用1 2 3 4 5 6
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
...
"\t"
答案 4 :(得分:-2)
第一个print
错误,因为它使用了前一个for循环的y
值。
将其更改为:
for(x = 1; x <= row; x++){
System.out.print(x + " ");
for(y = 1 ; y <= column; y++){
System.out.print(y * x + " ");
}
System.out.println();
}
更新:循环结束也是<
,而它们应该是<=
(因为它们是基于1的)。我在上面的片段中更新了它。