我需要让Scanner检查是否输入"退出",然后如果不是,则接受一个整数

时间:2014-09-26 19:04:50

标签: java string int

我试图编写一个从用户那里获取整数的程序,但如果用户输入"退出"也会结束该程序。当我运行程序时,它在我输入"退出"时起作用,但是当我开始输入一个整数时,我得到一个空行。如果我第二次输入整数,它就可以了。我已经尝试了几个针对类似问题的建议 - 包括try / catch,解析输入到Integer,以及触发空白Scanner#nextLine或Scanner#nextInt(以及在所有这些选项之间来回)。这是我最近一次尝试的例子。任何见解都将不胜感激。

    int colInput;

    System.out.println(", please pick a column in which to place your token (1-8).");
    System.out.println("(Type 'quit' to exit the game or 'restart' to start over.)");
    System.out.print("Column Choice: ");

    Scanner selectCol = new Scanner (System.in);

    try {
        if (selectCol.next().equals("quit"))
            Connect4.close();
    }
    finally {
        colInput = selectCol.nextInt();
    }

2 个答案:

答案 0 :(得分:3)

String input = selectCol.next();
int colInput;

if (input.equals("quit"))
    Connect4.close();
else
 colInput = Integer.parseInt(input);
 //Use colInput here or return colInput or whatever you wish to do with it

答案 1 :(得分:0)

在您提到的代码中,您正在使用"下一个令牌"扫描仪在行中找到

if (selectCol.next().equals("quit"))

收到令牌并与" quit"进行比较。无论令牌最初的价值是什么,它都会在之后丢失。然后在finally块中,您向扫描仪询问新令牌。然后他正在等待System.in中的新值。

只有匹配"退出"才能从扫描仪接收令牌。你应该将行改为

if (selectCol.next("quit"))

这样您就可以使用Scanner类javadoc for next(String)提供的方法。