gpt4 book ai didi

java - 如何检查严格格式的输入?

转载 作者:行者123 更新时间:2023-12-01 11:57:17 24 4
gpt4 key购买 nike

我正在为扫雷的基本非递归、非 GUI 形式做一个编码项目。要求之一是输入命令必须严格格式化,如下所示:

对于标记命令(显示、猜测、标记):[“显示”/“r”] [int] [int]

寻求帮助并退出:只是[“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 语句旨在抛出打印“命令无法识别”的默认情况。我意识到我的部分问题是它们位于两个单独的 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");

然后在你获得匹配后,你可以像你正在做的那样使用你的 switch case,如果它是“reveal”或“r”,我只会使用 split()并将其转为数组以获得不同的x和y坐标

关于java - 如何检查严格格式的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com