将用户响应存储到布尔变量的最有效方法

时间:2014-03-04 20:57:15

标签: java

这个问题与普通编程有关,并不是特定于语言的,但代码示例是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();

    }

我希望将响应保存为布尔值。但是,我不确定这样做的惯例或最有效的方法是什么。有人可以帮助我吗?

5 个答案:

答案 0 :(得分:3)

您可以做的是首先获取用户的响应并将其与已知值进行比较,然后为使用的值分配布尔值。所以它会是:

value = keyboard.nextLine();
if (value.equalsIgnoreCase("yes")
    employed = true;
else
    employed = false;

在这种情况下,如果用户输入“是”,“是”,“是”,“yEs”等,则会将布尔值设置为true。

答案 1 :(得分:2)

要求用户输入YN。阅读下一行。如果行为“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
}