-1

我是一名 java 初学者,我现在正在处理循环。在处理“for 循环”时,我遇到过这种情况,当使用和不使用大括号执行代码时,我得到了不同的结果。

你能解释一下获得不同输出的原因吗?

4

5 回答 5

3

你的问题是关于语言的语法。

从 JLS,该for语句的基本语法是:

for ( ForInit ; Expression ; ForUpdate ) Statement

例子:

for (int i = 0; i < array.length; i++) System.out.println(array[i]);

在上面的示例中,自然StatementSystem.out.println(array[i]);

块语句 ( { })

问题是,在 Java 中,语句也可以是block. Ablock以花括号 ( {...}) 开始/结束,并且可以包含一系列其他语句:

// this is a statement
int i = 0;
// this is also a statement, a block statement with two other statements inside
{ int j = 0; int x = 1; }

// now, as a block *is* a statement, and it contains a sequence of statements,
// the construction below is also valid
{ int k = 9; { int j = 0; int x = 1; } { int a = 0; } }

// also notice that, if not inside a String, white spaces don't matter, so
// the statement above is the same as
{
    int k = 9;
    { int j = 0;           int x = 1;               }
    {
        int a = 0;
    }
}

因此,如果您有:

for (int i = 0; i < array.length; i++) Statement1; Statement2;

只有Statement1是 的一部分for

当然,Statement1可以是一个块,比如{ stmt1_1; stmt1_2; },会让你for看起来像什么:

for (int i = 0; i < array.length; i++) { stmt1_1; stmt1_2; } Statement2;

由于空格无关紧要,您可以以更好的可读方式将其编写为:

for (int i = 0; i < array.length; i++) {
   stmt1_1;
   stmt1_2;
}
Statement2;
于 2013-06-24T21:21:19.463 回答
3

没有大括号,您只包括.之后的语句for。使用大括号,您将包括其中包含的所有内容(该范围内的所有内容)。

例子:

for (int i = 0; i < 10; i++)
    System.out.println("Ten");// Will print "Ten", 10 times.
    System.out.println("Once");// Will print "Once", 1 time.

如果包含大括号,它将同时打印它们 10 次。

于 2013-06-24T20:45:16.500 回答
1
  • 没有大括号:只有下一条语句在循环中。
  • 带大括号:大括号内的所有内容都在循环中。

Java 代码中的空格只是为了便于阅读代码。编译器完全忽略缩进。

请参阅此代码:

for (int i = 0; i < 3; i++)
    System.out.println("Hello"); System.out.println("World");

将打印

Hello
Hello
Hello
World

相同的输出将由

for (int i = 0; i < 3; i++) System.out.println("Hello");
    System.out.println("World");
于 2013-06-24T20:46:34.737 回答
0

您的问题是循环中有多个语句。使用大括号,这些语句在循环的每次迭代中执行一次。如果没有大括号,则每次迭代都会执行第一条语句,其余语句在循环完成后执行。

不带大括号:

for (int i = 0; i < 10; i++)
System.out.println("Inside for loop");
System.out.println("Outside for loop");

带牙套L

for (int i = 0; i < 10; i++){
System.out.println("Inside for loop");
System.out.println("Also inside for loop");
}
于 2013-06-24T20:46:40.380 回答
0

以下示例演示了您的问题:

这将使第一行循环 100 次,但只需将其他两行作为常规打印运行。

for(int i = 0; i < 100; i++)
    System.out.println("Test Print 1");
    System.out.println("Test Print 2");
    System.out.println("Test Print 3");

这将打印所有行 100 次。

for(int i = 0; i < 100; i++){
    System.out.println("Test Print 1");
    System.out.println("Test Print 2");
    System.out.println("Test Print 3");
}
于 2013-06-24T20:48:15.853 回答