我是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)
{
???????;
}
}
答案 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;
条件运算符确保只评估someExpression
或someOtherExpression
中的一个,因此您可以使用方法调用等,确信它们不会被不适当地执行。
当然有时候这会变得太复杂 - 你需要自己判断每个表格的可读性。
答案 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];
}
以正确的回报编辑