这是我的第一个问题。我是计算机科学专业的二年级学生,我在正确阅读几个输入时遇到了一些麻烦。我正在创建一个接受一系列命令的棋盘游戏。
这是一些问题代码的样子:
要求用户输入如下所示的命令: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键后停止检查输入?
答案 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();