如何检查未知数量的输入java并在行尾停止检查

时间:2012-09-29 19:01:38

标签: java input

这是我的第一个问题。我是计算机科学专业的二年级学生,我在正确阅读几个输入时遇到了一些麻烦。我正在创建一个接受一系列命令的棋盘游戏。

这是一些问题代码的样子:

要求用户输入如下所示的命令:create 0 0 fast flexible,或者像这样:create 0 0,其中整数具有任何值,并且快速或灵活可以输入另一个。

if((keyboard.next()).equals("create"))
{
    xValue = keyboard.nextInt();
    yValue = keyboard.nextInt();

if((keyboard.next().equals("fast")))
{
        pieceType = "FP";
        if((keyboard.next().equals("flexible")))
        {
            pieceType = "FF";
        }
    }


if((keyboard.next().equals("flexible")))
{
        pieceType = "SF";
        if((keyboard.next().equals("fast")))
        {
            pieceType = "FF";
        }
}
}

该计划始终需要7个输入。

如何在用户按Enter键后停止检查输入?

3 个答案:

答案 0 :(得分:1)

我猜你可以根据白色空格分割整个字符串,然后按字(或部分)顺序处理字符串。无论如何,你应该小心地断言输入。

答案 1 :(得分:0)

尝试

String NEW_LINE_SIGN = "\n";
if (keyboard.next().contains(NEW_LINE_SIGN){ /* .... */ }

答案 2 :(得分:0)

这应该有用......

Scanner kbd = new Scanner(System.in);
kbd.useDelimiter(System.getProperty("line.separator"));
//you could create a rule automatically with some kind of a rules engine
if(kbd.hasNext("create(\\s+)(\\d+)(\\s+)(\\d+)(\\s+)(fast|flexible)(\\s+)(fast|flexible)")) {
    MatchResult res = kbd.match();
    for(int i = 0; i <= res.groupCount(); ++i) {
        System.out.println(res.group(i));
        //handleRules(res.group(i), i);
    }
}
kbd.close();