Java 为什么不是';这个println不是用整个身体来执行的吗?

Java 为什么不是';这个println不是用整个身体来执行的吗?,java,nested-loops,Java,Nested Loops,我是编程新手,并试图完全理解这个嵌套for循环。println是内部循环主体的一部分。但是,它不是通过内部循环迭代执行的。我不想执行它,但我只是想理解为什么内部循环体没有完全执行 int rowNum, colNum; for (rowNum = 1; rowNum <= 3; rowNum++) { for (colNum = 1; colNum <= 2; colNum++) System.out.print(" rowNum

我是编程新手,并试图完全理解这个嵌套for循环。
println
是内部循环主体的一部分。但是,它不是通过内部循环迭代执行的。我不想执行它,但我只是想理解为什么内部循环体没有完全执行

int rowNum, colNum;
    for (rowNum = 1; rowNum <= 3; rowNum++) 
    {
     for (colNum = 1; colNum <= 2; colNum++) 
            System.out.print(" rowNum: " + rowNum + " colNum: " + colNum);
        System.out.println();

    }
相反,我得到的是:

 rowNum: 1 colNum: 1 rowNum: 1 colNum: 2
 rowNum: 2 colNum: 1 rowNum: 2 colNum: 2
 rowNum: 3 colNum: 1 rowNum: 3 colNum: 2

再说一遍,我只是想了解为什么,而不是如何修复它。。。谢谢

rowNum:1 colNum:1 rowNum:1 colNum:2 rowNum:1 rowNum:2 colNum:2 rowNum:3 colNum:1 rowNum:3 colNum:2


这是因为在退出循环并打印新行之前,需要打印2次

对于循环,如果未提供花括号,则仅执行下一行。如果在第二个for循环和println()之后用花括号括起来;。 你会得到你想要的

系统输出打印(“xxx”); System.out.println()

这会给你 xxx xxx xxx xxx

因为它是print println 打印2次,然后行出现

编辑第一个System.out.println(“rowNum:+rowNum+”colNum:+colNum”)


然后删除第二个println。

否println是外部循环的一部分,因为您不使用大括号!因此,只有第一次打印属于内部循环。如果您正确缩进代码,一切都会很明显。使用IDE的“格式化代码”操作来实现这一点,您将发现此类错误,因为代码的结构将变得清晰。总是,总是在块周围使用花括号,即使它们包含一条指令。@GhostCat对,我注意到一旦我添加了花括号,println就成为了内部循环体的一部分。所以,如果我不在循环体中添加花括号,那么只有第一行是循环体的一部分,对吗?谢谢!完全同意“修正压痕”。如果你这样做,一切都会变得清晰。
println
不是内部循环体的一部分。伙计们,我不想修复任何东西。这是教科书上的代码。我是新来的。我只是想弄明白为什么指纹不是身体的一部分。请记住,你们已经做了一段时间了,有些事情对于有经验的程序员来说是显而易见的,对于新手来说则不一样——即使事情是缩进性质的。但是谢谢你的缩进提示,我一定会应用它,我刚刚在保存操作中使用了IDE格式:)谢谢!这是非常模糊的。请改进你的答案。目前OP的评论在回答问题时更加详细。欢迎来到stackoverflow!这令人信服地展示了如何修复问题,但最初的问题是为什么第二个println没有作为内部for循环的一部分执行。顺便说一句,您可以使用三个倒勾(``````)来格式化代码,以便将来得到答案。因为如果不提供花括号,for循环只执行下一行。如果在第二个for循环和println()之后用花括号括起来;。你会得到你想要的。
 rowNum: 1 colNum: 1 rowNum: 1 colNum: 2
 rowNum: 2 colNum: 1 rowNum: 2 colNum: 2
 rowNum: 3 colNum: 1 rowNum: 3 colNum: 2