如何获取String输入以接​​受Java中的可能整数?

时间:2015-11-27 04:06:58

标签: java string input console integer

我是Java的初学者,我正在创建一个接受Java用户输入的程序,我正在尝试创建一个接受字符串或整数作为响应的字符串。但是,当我输入可接受的整数时,它将无法识别答案。这是代码:

System.out.println("How much time you you want to spend on this? Less than 30 mins, less than an hour, or more? Type \"30\", \"h\", or \"m\".");
    String ls = console.next();

    while (!ls.equalsIgnoreCase("h") && !ls.equalsIgnoreCase("m") && ls.equalsIgnoreCase("30")) {
        System.out.println("Type shit properly.");
        ls = console.next();
    }

    if (ls.equalsIgnoreCase("30")) {
        System.out.println("Do you want to do something fun? Y/N.");
        String dare = console.next();
        while (!dare.equalsIgnoreCase("y") && !dare.equalsIgnoreCase("n")) {
            System.out.println("Seriously?");
            dare = console.next();
        }
    }

每次我在控制台输入30时,它都会向我提供错误报告“正确键入shit”,而不是继续执行“if ls equals 30”部分。它适用于m和h选项,而不是数字。我认为字符串也接受了数字;我错了吗?如何让它接受字符串和整数作为输入?

2 个答案:

答案 0 :(得分:1)

更改

&&ls.equalsIgnoreCase("30")

&&!ls.equalsIgnoreCase("30")

如果您想允许任何号码,可以使用String.matches(String)

&&!ls.matches("\\d+")

答案 1 :(得分:0)

使用!ls.matches("30")代替ls.equalsIgnoreCase("30")