Java 如何编写将布尔值转换为“的方法”;是”;或;否";
我是java新手,我需要编写一个方法,将布尔值true或false转换为字符串“是”或“否”。我有点迷路了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
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");
}
}