嵌套用于循环输出打印和格式化不正确的表格,这一切都很时髦



,因此目标是使用嵌套的循环输出6行和10列。事实是,循环的内部循环应该检查数字是偶数还是奇怪,因为它甚至是偶数,我们将在其中添加2个,然后在进入下一个输出之前打印出10次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("%2dn", numberE);
}

从内部循环开始,只能迭代9次。第二,您不需要嵌套循环,需要一个循环和一个警卫来确定何时打印。

不要在循环中修改numbere。而是只打印numbere 2。

另外,如果您的内部循环从0到&lt; 10,您将获得10次迭代,而您不需要再次打印数字 - 只是一个newline。

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
}

我会这样做。给出所需的结果。

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行作为行计数器。我照顾的变量要保持行数。在这里,由于目标为6,我们从第1行开始,然后直到第6行。在循环的每个值中,我们将i的值保存到温度,因为我们不希望i的值在增加之前更改循环的主。然后,我们检查此温度值是否是通过使用Modulo部门进行的。然后,我们运行一个从1到10的循环,因为我们需要10列才能打印值温度(原始I或增加,因为它甚至是)。退出循环后,最后移至下一行,我们执行一个system.out.println()。

我建议使用临时变量存储当前的预期值。

解决方案的问题是,您正在通过在第二个循环中使用numberE += 2;修改numberE的值,这会在全球上更改该值。

将最后一列移入嵌套的循环也使其更容易,因为您无需在循环外定义临时变量。使用此功能也意味着将<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");
}

但是,您非常接近,随着练习,您会变得更好。

最新更新