如何检查严格格式化的输入?
How to check for strictly formatted input?
我正在为扫雷的基本非递归、非 GUI 形式进行编码项目。要求之一是输入命令必须严格格式化,如下所示:
对于标记命令(显示、猜测、标记):
["reveal"/"r"] [整数] [整数]
寻求帮助并退出:
只是 ["help"/"h"] 或 ["quit"/"q"]
超出这些限制的任何输入都必须被视为格式错误。我的显示代码如下所示:
case "reveal":
case "r":
roundsCompleted ++;
if(input.hasNextInt()){
par1 = input.nextInt();
}
else{
commandIn = null;
}
if(input.hasNextInt()){
par2 = input.nextInt();
correctInput = true;
}
else{
commandIn = null;
}
if(correctInput && isInBounds(par1, par2)){
reveal(par1, par2);
当然,这一切都在 switch 语句中。 commandIn = null 语句旨在抛出打印 "command not recognized" 的默认情况。我在这里意识到我的部分问题是它们在两个单独的 if-else 语句中。另一个问题是,当第一个之后没有 int 时, input.hasNextInt() 似乎没有评估为 false 。
这个问题的实质是完全限制这些命令为我上面列出的格式。谁能给我一些关于这个问题的见解?谢谢
我会使用 regex 来首先查看某些内容是否是一个好的输入,或者只是因为它会更容易
String input = "r 3 4";
if (input.matches("^(help|h|quit|q|((r|reveal) \d \d))$"))
//switch case
System.out.println("match");
else
//null string
System.out.println("no match");
然后在你得到匹配后你可以像你正在做的那样使用你的开关盒,如果它是 "reveal" 或 "r",我会使用 split()并将其转换为数组以获得不同的 x 和 y 坐标
我正在为扫雷的基本非递归、非 GUI 形式进行编码项目。要求之一是输入命令必须严格格式化,如下所示:
对于标记命令(显示、猜测、标记): ["reveal"/"r"] [整数] [整数]
寻求帮助并退出: 只是 ["help"/"h"] 或 ["quit"/"q"]
超出这些限制的任何输入都必须被视为格式错误。我的显示代码如下所示:
case "reveal":
case "r":
roundsCompleted ++;
if(input.hasNextInt()){
par1 = input.nextInt();
}
else{
commandIn = null;
}
if(input.hasNextInt()){
par2 = input.nextInt();
correctInput = true;
}
else{
commandIn = null;
}
if(correctInput && isInBounds(par1, par2)){
reveal(par1, par2);
当然,这一切都在 switch 语句中。 commandIn = null 语句旨在抛出打印 "command not recognized" 的默认情况。我在这里意识到我的部分问题是它们在两个单独的 if-else 语句中。另一个问题是,当第一个之后没有 int 时, input.hasNextInt() 似乎没有评估为 false 。
这个问题的实质是完全限制这些命令为我上面列出的格式。谁能给我一些关于这个问题的见解?谢谢
我会使用 regex 来首先查看某些内容是否是一个好的输入,或者只是因为它会更容易
String input = "r 3 4";
if (input.matches("^(help|h|quit|q|((r|reveal) \d \d))$"))
//switch case
System.out.println("match");
else
//null string
System.out.println("no match");
然后在你得到匹配后你可以像你正在做的那样使用你的开关盒,如果它是 "reveal" 或 "r",我会使用 split()并将其转换为数组以获得不同的 x 和 y 坐标