2

如果airCon字段airCon为真,方法printDetails它的打印结果是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);    
    }
}
4

7 回答 7

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布尔值才会被读取。

于 2013-03-20T17:57:44.007 回答
3

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

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

相同的效果,更少的代码。

PS您当然可以将整个表达式移动到println()if 您需要做的就是打印它。

于 2013-03-20T17:56:57.403 回答
3

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

System.out.println(aircon ? "Yes" : "No");
于 2013-03-20T17:57:05.163 回答
2

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

你可以使用一个方便的 Java 技巧来简化它:

public void printDetails()
{
    System.out.println(airCon ? "Yes" : "No");
}
于 2013-03-20T17:57:10.840 回答
0

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

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

这做同样的事情。

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

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

在这里最好将“是”和“否”字符串设为公共静态最终结果,以便它们充当常量。

于 2013-03-20T18:03:01.893 回答
0

或者你可以使用它,为你节省一个 else:

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

}
于 2013-03-20T18:04:14.297 回答
0

使用三元运算符。

String con=airCon?"yes":"no"
于 2013-03-20T17:58:51.250 回答