有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中,能否在for之后立即放置if?

Eclipse允许我编写如下代码,并且不会显示任何错误:

for (SomeClass c : listOfSomeClass) if (c.someBoolean) {
    // actions to take if someBoolean is true
}

这会像预期的那样,还是这不是有效的Java


共 (6) 个答案

  1. # 1 楼答案

    非正式地说,for结构有以下语法:

    for (...)语句

    通常,语句将采用{指令集的形式,每个指令集之间用^{分隔}但是,当然,可以省略单个语句的大括号

    自从if (){ }是一条语句,你的代码是有效的

    但这并不清楚:至少要遵守一个既定的惯例,在下一行的if开头加上一层缩进。我总是在写for循环时使用大括号,但这是个人的选择,很多受人尊敬的程序员都不这么做

  2. # 2 楼答案

    是的,它可以做到,如果循环

    if (c.someBoolean) {
        // actions to take if someBoolean is true
    }
    

    将执行多次

    在for循环之后,会立即执行什么。 比如

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

     for(int i=0;i<10;i++)
    {
        System.out.println("welcome");
    }
    

    所以它会打印欢迎10次

    但是这个例子

    f

    or(int i=0;i<10;i++)
        System.out.println("welcome");
        System.out.println("outside");
    

    将打印欢迎10次,外部打印一次。 上述代码类似于

    for(int i=0;i<10;i++)
    {
        System.out.println("welcome");
    }
        System.out.println("outside");
    
  3. # 3 楼答案

    它工作正常,但格式可能会让人困惑。即使你也不确定它会做什么。我建议您使用eclipse中的标准格式化程序生成以下内容

    for (SomeClass c : listOfSomeClass) 
        if (c.someBoolean) {
            // actions to take if someBoolean is true
        }
    
  4. # 4 楼答案

    如果你想在循环中执行多行代码,你可以这样写

    for (SomeClass c : listOfSomeClass)  
    {
        //multiple lines to be executed
        System.out.println("print this awesome line");
    }
    

    现在,如果你只想根据循环执行一个单音代码行,那么你可以这样写

    for (SomeClass c : listOfSomeClass)  
        System.out.println("print this awesome line");
    

    现在这一行可以是任何有效的代码行 因此,如果条件也允许

    if(awesomeCondition)
    {
        System.out.println("print this awesome line in side legendary if condition");
    }
    

    因此,您的最终代码是

    for (SomeClass c : listOfSomeClass)  
    if(awesomeCondition)
    {
        System.out.println("print this awesome line in side legendary if condition");
    }
    

    这与

    for (SomeClass c : listOfSomeClass)  
    {
        if(awesomeCondition)
        {
            System.out.println("print this awesome line in side legendary if condition");
        }// end of IF block
    }// end of for loop
    
  5. # 5 楼答案

    这是有效的。if的重复次数与listOfSomeClass的元素重复次数相同。但这并不意味着像这样编写Java是个好主意。请永远不要这样做

    你甚至可以写这样的东西

    for (SomeClass c : listOfSomeClass) if (c.someBoolean) System.out.println(c);
    

    如果你感觉特别反常

    然而,在编写代码时,重要的是编写其他程序员可以轻松阅读、理解和修改的代码。一旦一个软件系统投入生产,您可以相当肯定,在将来的某个时候,它将需要进行更改。你不能确定的是这些变化会是什么

    所以一个好的程序员,一个专业的程序员,写代码的方式要尽可能容易修改;这意味着尽可能容易理解。现在,我们专业程序员已经习惯了看到代码以某种方式排列。与forif一起使用的花括号,无论它们是否实际需要。一致的压痕。直观地使用变量名等等。任何稍微不寻常的事情都会让我们慢下来

    我不想挠头,试图弄明白代码是如何工作的。我不想考虑哪些行是for循环或if分支的一部分。我想要一段代码,当我第一次看到它时,它会告诉我它的功能。所以,如果你曾经和我在同一个团队中,或者和任何一个模模糊糊地像我的程序员在同一个团队中,那么出于对这个世界上一切美好事物的热爱,请像这样写这个循环

    for (SomeClass element : listOfSomeClass) {
        if (element.shouldBePrinted()) {
            System.out.println(element);
        }
    }
    
  6. # 6 楼答案

    这是有效的Java代码,如下所示:

    for (SomeClass c : listOfSomeClass) {
        if (c.someBoolean) {
            // actions to take if someBoolean is true
        } 
    }
    

    实际上,Java允许您在for循环条件之后编写一行语句。例如:

    for (int i = 0; i < 10; i++)
        System.out.println(i);
    

    请注意,这种风格通常不受欢迎,因为它可能会导致对代码功能的误解