我对Boolean.valueOf(String)
的使用有疑问。在我的代码中,用户将通过输入true
或false
来回答问题。然后字符串应转换为boolean
。
public String setCorrespondingAuthor ()
{
String respons = "true";
do
{
System.out.print("Is s/he the corresponding author? (true/false)");
respons = sc.next();
sc.nextLine();
} while (!respons.equalsIgnoreCase("true")
&& !respons.equalsIgnoreCase("false"));
boolean flag = Boolean.valueOf(respons);
if (!flag)
{
return "not the corresponding author";
}
return "the corresponding author";
}
现在,它运作正常。问题是在输出中,它会在处理之前提示两次。
答案 0 :(得分:1)
问题是您要从用户输入中读取两次:sc.next()
和sc.nextLine()
。您只应阅读一次并将该值存储在respons
变量中。
您还应该考虑在字符串文字(例如equalsIgnoreCase
,"true"
)上调用"false"
而不调用变量,因为变量可能是null
,导致{ {1}}。
NullPointerException