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

时间:2019-03-22 02:04:35

标签: java for-loop nested formatting output

因此,目标是使用嵌套的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);
}

4 个答案:

答案 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()。