当值为真时,是否有更快的方式打印“是”?

时间:2013-03-20 17:55:24

标签: java if-statement system.out

方法printDetails如果airCon字段airCon为true,则打印出yes,但我认为这不是完美的方式,所以还有其他方法吗?

public class Auto
{
    private boolean airCon;
    public Auto() {}
    public void setAirCon(boolean airCon) {
        this.airCon = airCon;
    }

    public void printDetails() {
        String con;
        if(airCon) {
            con = "Yes";
        } else {
            con = "No";
        }
        System.out.println(con);    
    }
}

7 个答案:

答案 0 :(得分:4)

尝试三元:

System.out.println(aircon ? "Yes" : "No");

三元表达式非常适合根据条件将某个值分配给一个值或另一个值,所有这些都在一行中。你也可以嵌套它们:

bool isConditionTrue, areYouSure;
string answer = isConditionTrue ? areYouSure ? "Yes" : "No" : "No";

使用括号更容易阅读:

string answer =  isConditionTrue ? (areYouSure ? "Yes" : "No") : "No";

所以只有 isConditionTrue 布尔值为真时才会读取 areYouSure 布尔值。

答案 1 :(得分:3)

另一种方法是使用三元运算符:

String con = airCon ? "yes" : "no";

效果相同,代码少。

P.S。如果您需要做的就是打印它,您当然可以将整个表达式移动到println()

答案 2 :(得分:3)

这是一个非常好的方法,如果你想保存线条虽然你可以使用三元语句

System.out.println(aircon ? "Yes" : "No");

答案 3 :(得分:2)

这似乎完全没问题。代码有点长,但这不一定是坏事。

您可以使用方便的Java技巧来简化它:

public void printDetails()
{
    System.out.println(airCon ? "Yes" : "No");
}

答案 4 :(得分:0)

使用三元运算符。

String con=airCon?"yes":"no"

答案 5 :(得分:0)

你说得对。虽然你的代码有点冗长,但最好还是按照你的理解去做。您可以使用条件语句:

System.out.println((airCon) ? "Yes": "No")

这也是一样的。

但是,我会定义一个实用程序方法,以防您想在应用程序的其他区域使用它。

public static String getYesNo(boolean input) {
   return ((input) ? "Yes": "No");
}

这里最好将“是”和“否”字符串设为public static final,这样它们就可以作为常量。

答案 6 :(得分:0)

或者您可以使用此功能,为您节省其他费用:

public void printDetails()
{
String con = "No";
if(airCon)
{
    con = "Yes";
}
System.out.println(con);

}