Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编写将布尔值转换为“的方法”;是”;或;否";_Java - Fatal编程技术网

Java 如何编写将布尔值转换为“的方法”;是”;或;否";

Java 如何编写将布尔值转换为“的方法”;是”;或;否";,java,Java,我是java新手,我需要编写一个方法,将布尔值true或false转换为字符串“是”或“否”。我有点迷路了 public class Book { private String title; private String author; private String isbn; private int pages; private boolean pback; private double price; /** * Constr

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

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)
                    {
                        ???????;
                    } 

            }
有几件事需要注意:

  • 相等性是使用
    =
    测试的,因此如果(a==b),您应该编写
    ,而不是
    如果(a=b)
  • 使用关键字
    return
    后跟值从方法返回值
  • else不接受补充参数,除非您想说
    else if
    ,它随后接受类似于
    if
    的表达式,例如
    else if(a==b)
我觉得我错过了什么。

那是你的朋友:

public static String translate(boolean trueOrFalse) {
    return trueOrFalse ? "yes" : "no";
}
一般来说,如果你发现自己在写作:

SomeType x;
if (someCondition) {
    x = someExpression;
} else {
    x = someOtherExpression;
}
一般来说,最好使用:

SomeType x = someCondition ? someExpression : someOtherExpression;

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


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

以上建议应该可以做到这一点,但我建议您使用:

public String translate(boolean trueOrFalse)
{
    return String.valueOf(trueOrFalse);
}
因为以后您可以轻松地将其转换回:

public boolean translateBack(String translation)
{
    return Boolean.parseBoolean(translation);
}
但翻译字符串将是“false”的“true”:


使用正确的返回值进行编辑首先,您的translate方法的参数永远不会被使用。您应该解决这个问题

第二,你需要使用字符串值“Yes”和“No”作为条件吗?如果不需要,你可以使用布尔版本(我看没有理由你不能),我建议保留布尔版本

然后,您可以使用以下代码将该布尔值输出为“是”或“否”:

        //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");
                } 

        }

事实上,与测试两个字符串的等价性相比,使用带有布尔值的条件要容易得多。

Apache Group有一个项目,该项目要求使用常见的Java类,如
布尔类。
。它的类有一些很好的方法可以使用:

toStringOnOff(布尔布尔布尔)-将布尔值转换为返回“开”或“关”的字符串
toStringOnOff(布尔布尔布尔)-将布尔值转换为返回“开”、“关”或null的字符串
toStringTrueFalse(布尔布尔)-将布尔值转换为返回“真”或“假”的字符串
toStringTrueFalse(布尔布尔布尔)-将布尔值转换为返回“真”、“假”或null的字符串
TOSTRINGIESNO(布尔布尔布尔)-将布尔值转换为返回“是”或“否”的字符串
TOSTRINGIESNO(布尔布尔布尔)-将布尔值转换为返回“是”、“否”或null的字符串
在您的示例中,您应该使用该方法

boolean myBoolean=false;
字符串结果=BooleanUtils.toStringYesNo(myBoolean);
系统输出打印项次(结果);
这会打印出来

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


org.apache.commons
commons-lang3
3.6

从技术上讲,您缺少了一个“}”:(与
if(pback)
或(反之)
if(!pback)相比,针对真/假的测试有点多余
。我很少与true/false进行比较。同样,在这种情况下,我总是使用条件运算符。@Jon:我同意。我的目标是给出最简单的可能解决方案,正如提问者所说,他刚刚开始使用Java。我会说条件运算符是最简单的可能解决方案-但即使我给出了if/else版本,我至少已经提到你根本不需要“==”。@starblue答案表明我认为对提问者来说是最好的。我最不希望的是产生更多的混乱。翻译()中的代码函数不正确。您在if语句和else子句中使用赋值运算符,而不是相等运算符。您也没有类定义的右括号。很小的事情,我相信没有人会尝试运行此代码,但很高兴事情正确:)编写b==true或b==false的开发人员条件运算符确保只计算someExpression或someOtherExpression中的一个,因此您可以使用方法调用等,确信它们不会被不适当地执行。“使用if-else也是如此construct@matt没错,这就是为什么它们可以互换的原因。重点是它与VB中的IIF不同,例如-一个常见的问题是,第二个和第三个表达式都可能得到计算,这实际上不是问题,-1不是我写的,但这很可能是因为您在方法中不必要地创建了
String[]
。你让人更难理解。只需简单地执行
返回b?“是”:“否”
.er,您正在将一个
字符串
返回给一个返回类型为
布尔值
的函数,更不用说字符串数组是多余的。这个特定示例是否总是返回“yes”?:)还是我没听懂这个笑话?这就是一个例子。myBoolean被假定为一些尚未确定的布尔值,并非在所有情况下都明确定义为true。
public String translate(boolean trueOrFalse)
{
    return String.valueOf(trueOrFalse);
}
public boolean translateBack(String translation)
{
    return Boolean.parseBoolean(translation);
}
String yesNo(boolean b) {
    String[] s = {"yes", "no"};
    return b ? s[0] : s[1];
}
        //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");
                } 

        }