,因此目标是使用嵌套的循环输出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");
}
但是,您非常接近,随着练习,您会变得更好。