如何编写一个将布尔值转换为“是”或“否”的方法

时间:2010-02-07 09:26:14

标签: java

我是java的新手,我需要编写一个将布尔值true或false转换为字符串“yes”或“no”的方法。我有点迷失。

public class Book
{
    private String title;
    private String author;
    private String isbn;
    private int pages;
    private boolean pback;
    private double price;

    /**
     * Constructor for objects of class Book
     */
    public Book(String bookTitle, String bookAuthor, String bookCode, int bookPages, boolean paperback, double bookRetail)
    {
        // initialise instance variables
        title = bookTitle;
        author = bookAuthor;
        isbn = bookCode;
        pages = bookPages;
        pback = paperback;
        price = bookRetail;
    }


public String translate(boolean trueorFalse)
            {
                if(pback = true)
                    {
                        ??????;
                    }            
                 else(pback = false)
                    {
                        ???????;
                    } 

            }

8 个答案:

答案 0 :(得分:32)

boolean myBoolean = true;
String result = myBoolean ? "yes" : "no";

答案 1 :(得分:24)

conditional operator是你的朋友:

public static String translate(boolean trueOrFalse) {
    return trueOrFalse ? "yes" : "no";
}

一般来说,如果你发现自己在写:

SomeType x;
if (someCondition) {
    x = someExpression;
} else {
    x = someOtherExpression;
}

使用起来通常更好:

SomeType x = someCondition ? someExpression : someOtherExpression;

条件运算符确保只评估someExpressionsomeOtherExpression中的一个,因此您可以使用方法调用等,确信它们不会被不适当地执行。

当然有时候这会变得太复杂 - 你需要自己判断每个表格的可读性。

答案 2 :(得分:4)

if(pback == true)
{
    return "yes";
} else {
    return "no";
} 

有几点需要注意:

  • 使用==测试相等性,因此您应该编写if ( a == b ),而不是if ( a = b );
  • 使用关键字return后跟值
  • 来完成从方法返回值
  • 除非您想说else if然后采用类似于if的表达式,例如,否则不会采取补充参数。 else if ( a ==b )

答案 3 :(得分:4)

Apache Group有一个名为Apache Commons Lang的项目,用于处理常见的Java类,如Boolean。它的BooleanUtils类有一些很好的方法可以使用:

toStringOnOff(boolean bool) - converts a boolean to a String returning 'on' or 'off'
toStringOnOff(Boolean bool) - converts a Boolean to a String returning 'on', 'off' or null
toStringTrueFalse(boolean bool) - converts a boolean to a String returning 'true' or 'false'
toStringTrueFalse(Boolean bool) - converts a Boolean to a String returning 'true', 'false' or null
toStringYesNo(boolean bool) - converts a boolean to a String returning 'yes' or 'no'
toStringYesNo(Boolean bool) - converts a Boolean to a String returning 'yes', 'no' or null

在您的示例中,您应该使用toStringYesNo方法。

boolean myBoolean = false;
String result = BooleanUtils.toStringYesNo(myBoolean);
System.out.println(result);

这将打印

no

要将库添加到项目中,只需将其添加到Maven pom.xml依赖项中:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.6</version>
</dependency>

答案 4 :(得分:1)

if (pback) {
    return "yes";
}
else {
    return "no";
}

我觉得我错过了什么。

答案 5 :(得分:0)

首先,从不使用translate方法的参数。你应该解决这个问题。

其次,您是否需要使用字符串值“是”和“否”作为条件?如果没有,你可以使用布尔版本(我认为你没有理由不这样做)我建议保留布尔值。

然后,当使用类似下面的代码输出时,您可以将该布尔值转换为“是”或“否”:

        //say your boolean variable is called gotIt
            if(gotIt == true) //you can also just say if(gotIt) here
                {
                    //here you place the string where it needs to be, either output it or place it into a variable
                     System.out.println("Yes");
                }            
             else
                {
                    //same as above but for false
                    System.out.println("No");
                } 

        }

事实是,使用具有布尔值的条件更容易,而不是测试2个字符串的等价。

答案 6 :(得分:-1)

以上建议应该可以胜任,但我建议您使用:

public String translate(boolean trueOrFalse)
{
    return String.valueOf(trueOrFalse);
}

因为以后您可以轻松转换回来:

public boolean translateBack(String translation)
{
    return Boolean.parseBoolean(translation);
}

但翻译字符串将为“false”的“true”:)

答案 7 :(得分:-5)

String yesNo(boolean b) {
    String[] s = {"yes", "no"};
    return b ? s[0] : s[1];
}

以正确的回报编辑