2

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

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);
    }

}

现在的主要问题是,当我运行它时它不起作用。我一直在寻找,我所看到的是我需要测试布尔值。这是真的?其他一切正常,但布尔选项不允许我输出。

4

3 回答 3

3

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

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

所以你需要输入truefalse- 是或否将不被接受。

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

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

如果你想接受yes, no, 甚至y,n或类似的,你应该Scanner.nextString()自己使用和处理逻辑。

于 2013-11-13T09:25:00.583 回答
0

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

于 2013-11-13T09:26:37.340 回答
0

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

于 2013-11-13T09:26:59.043 回答