布尔输出阻塞整个过程

时间:2013-11-13 09:17:59

标签: java

很抱歉打扰你们,但我似乎无法在这里找到问题。还在学习所以任何输入都会很棒。

import java.util.Scanner;


public class AllAboutMe {

    public static void main(String[] args)
    {

        Scanner keyboard = new Scanner(System.in);
        String name;
        Boolean married;
        int age, height;

        System.out.print("What is your name? ");
        name = keyboard.nextLine();

        System.out.println("What is your age?");
        age = keyboard.nextInt();

        System.out.println("What is your height? ");
        height = keyboard.nextInt();

        System.out.println("Are you married?");
        married = keyboard.nextBoolean();

        char aChar = name.charAt(0);

        System.out.println("Your name is " + name);
        System.out.println("your initial is " + aChar);
        System.out.println("Your marital status is " + married);
        System.out.println("Your height is " + height);
        System.out.println("Your age is " + age);
    }

}

现在的主要问题是,当我运行它时,它将无法正常工作。我已经找了,我看到的是我需要测试布尔值。这是真的?其他一切正常,但布尔选项不允许我输出。

3 个答案:

答案 0 :(得分:3)

Scanner nextBoolean()方法使用这样的布尔模式来验证输入:

private static final String BOOLEAN_PATTERN = "true|false";

因此您需要输入truefalse - 是或否将不被接受。

这有点违反直觉,因为java Boolean类有一个名为parseBoolean()的方法,它为匹配“true”(不区分大小写)和布尔true的任何字符串返回布尔false其他任何事情。

但正如您所发现的那样,Scanner类的行为略有不同。

如果您想接受yesno,甚至yn等,您应该使用Scanner.nextString()并自行处理逻辑

答案 1 :(得分:0)

到目前为止,您的代码正在运行。 问题是“你结婚了吗?”只能用“真实”或“假”来回答。

答案 2 :(得分:0)

当你达到“你结婚了吗?”然后传递真或假,不要回答是或否