我想知道是否有人可以帮我解决我遇到的一个小问题。
我正在尝试打印出100个项目的数组,每行需要10个项目,之后它会开始一个新行。我已成功完成此操作,但每列中的每一行都显示相同的数字。例如。我的输出是:
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
什么时候出现的东西应该是:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
以下是我用来打印表的方法:
public static void printTable(int[] emirps) {
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 10; j++) {
// After 10 go to a new line
System.out.printf("%d\t", emirps[i]);
}
System.out.println("");
}
}
如果有人能帮助我确定我在哪里搞砸了,我会非常感激。
答案 0 :(得分:4)
每次通过内循环打印相同的emirps[i]
。有几种方法可以解决这个问题。这是一个:
public static void printTable(int[] emirps) {
for (int i = 0; i < 100; i += 10) {
for (int j = 0; j < 10; j++) {
// After 10 go to a new line
System.out.printf("%d\t", emirps[i + j]);
}
System.out.println();
}
}
这是另一个(不是很优雅):
public static void printTable(int[] emirps) {
for (int i = 0; i < 100; ++i) {
System.out.printf("%d\t", emirps[i]);
if (i % 10 == 9) {
System.out.println();
}
}
}
答案 1 :(得分:1)
您未在此代码中的任何位置使用j
索引。
以下是打印方式:
System.out.printf("%d\t", emirps[i+j]);
请注意,在print语句中,您现在正在使用i
和j
索引。
另外,为了使您的行偏移正常工作,您应该在循环的每一步将i
递增10。
或者,将emirps
声明为二维数组。然后printTable()
的签名将是:
public static void printTable(int[][] emirps)
在该设置中,以下是您打印的方式:
System.out.printf("%d\t", emirps[i][j]);
因此,在第一次设置中,i+j
一起索引到一维数组。在第二个设置中,i
是行,j
是列,一起索引为二维数组。看起来你正在做一维数组,但另一个例子是供将来参考。
答案 2 :(得分:1)
这看起来像是家庭作业,所以不是给你答案,而是提示:
对于第一个循环的第一次迭代,i = 0.在这种情况下,将j从0增加到9.请注意,我始终保持相同。这是当你打印第一行时。
一旦你通过第二个for循环,我增加1,现在i = 1.再次,你将j从0增加到9,我保持在1.这是你打印第二行
重复100次,因为我从0变为99.
有两种方法可以解决这个问题:
您应该尝试并实现这两种方法。它会帮助你更好地理解循环。
答案 3 :(得分:0)
使用模运算符。每次你的数字可以除以10而没有余数时,你可以换个新行,因为你已经填满了这一行。您使用“模运算符”获得余数,该运算符是百分号(%)。它可以像/那样使用,除了除了商是结果之外,除法运算的其余部分就是结果。
public static void main(String[] args)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 100; i++)
{
if (i != 0 && i % 10 == 0)
{
builder.append('\n');
}
builder.append(i + " ");
}
System.out.println(builder.toString());
}
打印出来:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99