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

Tim*_*Tim 5 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)
                    {
                        ???????;
                    } 

            }
Run Code Online (Sandbox Code Playgroud)

tan*_*ens 32

boolean myBoolean = true;
String result = myBoolean ? "yes" : "no";
Run Code Online (Sandbox Code Playgroud)

  • 这个特殊的例子不总是返回"是"吗?:)或者我不开玩笑? (2认同)

Jon*_*eet 24

条件运算符是你的朋友:

public static String translate(boolean trueOrFalse) {
    return trueOrFalse ? "yes" : "no";
}
Run Code Online (Sandbox Code Playgroud)

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

SomeType x;
if (someCondition) {
    x = someExpression;
} else {
    x = someOtherExpression;
}
Run Code Online (Sandbox Code Playgroud)

它通常更好用:

SomeType x = someCondition ? someExpression : someOtherExpression;
Run Code Online (Sandbox Code Playgroud)

条件运算符确保只有一个someExpression或被someOtherExpression评估,因此您可以使用方法调用等,确信它们不会被不适当地执行.

当然有时候这太复杂了 - 你需要自己判断每个表单的可读性.


小智 6

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
Run Code Online (Sandbox Code Playgroud)

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

boolean myBoolean = false;
String result = BooleanUtils.toStringYesNo(myBoolean);
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

这将打印

no
Run Code Online (Sandbox Code Playgroud)

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

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.6</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Rob*_*anu 4

if(pback == true)
{
    return "yes";
} else {
    return "no";
} 
Run Code Online (Sandbox Code Playgroud)

有几点需要注意:

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

  • 与“if (pback)”或(相反)“if (!pback)”相比,针对真/假的测试有点多余。我很少比较真/假。同样,在这种情况下我总是使用条件运算符。 (8认同)
  • @starblue 答案表明了我认为对提问者来说最好的。我最不想产生的想法是产生更多混乱。 (3认同)