因此,目标是使用嵌套的for循环输出6行10列。问题是内部for循环应该检查数字是偶数还是奇数,如果是偶数,我们将其加2,然后将该数字打印10次,然后移至下一个输出。所以这就是应该得到的
1 1 1 1 1 1 1 1 1 1
4 4 4 4 4 4 4 4 4 4
3 3 3 3 3 3 3 3 3 3
6 6 6 6 6 6 6 6 6 6
5 5 5 5 5 5 5 5 5 5
8 8 8 8 8 8 8 8 8 8
我以为自己是在正确的轨道上,但是我的输出完全是一团糟,这就是我所拥有的。谢谢任何愿意提供帮助的人。
for (int numberE = 1; numberE <= 6; numberE++)
{
for (int nestedE = 1; nestedE < 10; nestedE++)
{
if (numberE%2 == 0)
{
numberE += 2;
System.out.printf("%2d", numberE);
} else {
System.out.printf("%2d", numberE);
}
}
System.out.printf("%2d\n", numberE);
}
答案 0 :(得分:1)
从内循环开始,只会迭代九次。第二,您不需要嵌套循环,您需要一个循环和确定何时打印的保护装置。
答案 1 :(得分:1)
我建议使用一个临时变量来存储当前的预期值。
解决方案的问题在于,您正在第二个for循环中使用numberE
来修改numberE += 2;
的值,这会全局更改值。
将最后一列移入嵌套的for循环也使操作变得更加容易,因为您无需在循环外定义临时变量。使用此功能还意味着将<10
更改为<=10
。
for (int numberE = 1; numberE <= 6; numberE++) {
for (int nestedE = 1; nestedE <= 10; nestedE++) {
int current = (numberE % 2 == 0) ? numberE + 2 : numberE;
System.out.printf("%2d", current);
}
System.out.printf("\n");
}
不过,您已经很接近了,通过练习您会变得更好。
答案 2 :(得分:0)
请勿在循环内修改numberE。而是只打印数字E + 2。
此外,如果您的内循环从0到<10运行,您将获得10次迭代,而无需再次打印数字-只需换行。
for (int numberE = 1; numberE <= 6; numberE++)
{
for (int nestedE = 0; nestedE < 10; nestedE++) // <-- start at 0 and end <10 for 10 iterations
{
if (numberE%2 == 0)
{
System.out.printf("%2d", numberE + 2); // <-- print the number + 2
} else {
System.out.printf("%2d", numberE);
}
}
System.out.println(); // <-- don't print the value again here
}
答案 3 :(得分:0)
我会这样做。给出所需的结果。
public class NestedForLoop {
public static void main(String[] args) {
for (int i = 1; i <= 6; i++)
{
int temp = i;
if(temp%2 == 0) {
temp +=2;
}
for(int j=1;j<=10;j++) {
System.out.print(temp+" ");
}
System.out.println();
}
}
}
这里发生的事情的简短描述:
因此,由于我们需要6行,因此我们将6的值用作行计数器。变量i负责保持行数的计数。在这里,因为目标是6,所以我们从第1行开始,一直到第6行。在循环的每个值中,我们将i的值保存到temp,因为我们不希望i的值在递增in之前改变主要的for循环。然后,通过对2进行模除以检查该温度值是否为偶数。如果为偶数,则将温度值增加2。
然后,我们运行从1到10的循环,因为我们需要10列来打印值temp(原始i或递增,因为它是偶数)。退出循环后,最后移至下一行,我们执行System.out.println()。