这个问题与普通编程有关,并不是特定于语言的,但代码示例是Java。我有一个控制台程序,我想向用户询问一个简单的问题,例如:
public static void main(String[] args)
{
boolean employed;
// create a Scanner
Scanner keyboard = new Scanner(System.in);
System.out.print("Are you presently employed? "); // unsure of how to capture user response while keeping the program user friendly
employed = keyboard.nextBoolean();
}
我希望将响应保存为布尔值。但是,我不确定这样做的惯例或最有效的方法是什么。有人可以帮助我吗?
答案 0 :(得分:3)
您可以做的是首先获取用户的响应并将其与已知值进行比较,然后为使用的值分配布尔值。所以它会是:
value = keyboard.nextLine();
if (value.equalsIgnoreCase("yes")
employed = true;
else
employed = false;
在这种情况下,如果用户输入“是”,“是”,“是”,“yEs”等,则会将布尔值设置为true。
答案 1 :(得分:2)
要求用户输入Y
或N
。阅读下一行。如果行为“Y”,则将变量初始化为true。如果该行为“N”,则将其初始化为false。如果它既不是“Y”也不是“N”,请再次提出问题。您可以使用不区分大小写的比较来更宽容和友好。
答案 2 :(得分:1)
public static void main(String[]args){
boolean employed = false;
System.out.println("Are you presently employed?");
String response = new Scanner(System.in).nextLine();
if(response.length()>=1 && "Yy".contains(response.charAt(0)){
employed = true;
}
}
答案 3 :(得分:1)
为您的程序提供一些可以合理解释为TRUE的响应,以及一些可以解释为FALSE的响应。拒绝所有其他回复作为无效回复。
“是”通常假定为“真”,“否”通常假定为“假”。除此之外,还没有一个惯例。
如果问题不是肯定/否定问题,而是仅有两个有效答案的其他问题,那么您有一些选择。一个典型的问题是“你喜欢下雨天还是晴天?”在这些情况下,您可能希望将一些常量命名为对应于两个可能的答案,如下所示:
public static final boolean SUNNY = true;
public static final boolean RAINY = false;
然后,您可以稍后将该值与常量进行比较,并且您的代码仍然可以清楚地了解给定变量的真值或假值。
答案 4 :(得分:1)
我不确定我是否理解它,但我不会依赖于nextBoolean,而只是读取用户输入字符串,然后将其与一组可接受的值进行比较,例如“y”,“是的, “真实”,“我确实如此”,使用equalsIgnoreCase(字符串)是有意义的。这提供了更多的灵活性,你至少应该指出你的问题,你会接受什么答案
像
这样的东西System.out.print("Are you presently employed? (y/n) ");
String answer = keyboard.next();
if("y".equalsIgnoreCase(answer)) {
employed = true;
} else if("n".equalsIgnoreCase(answer)) {
employed = false;
} else {
//retry, throw exception, handle erroneous user input
}