如何检查userInput命令中的特定部分?
我正在试着做一个游戏..当有人在控制台中键入命令时,我希望命令中有[args]。
例如:
~修复[用户名][运行状况]
以下是示例代码(如果您有答案,请参考此代码):
import java.util.Scanner;
class StackOverflowExample {
public static void main(String[] args) {
System.out.println("Healing Command: ~heal [username] [health]");
int player1HP = 0;
Scanner userInteraction = new Scanner(System.in);
String userInput = userInteraction.nextLine();
if (userInput.equals("~heal " /**+ username + num**/) /**How do I make it so that a number(the amount to heal) and a username(player username) can be inputted after?**/){
player1HP += 0; /**I need the number that the user inputs to be added to player1HP**/
}
System.out.println("player1/**I want this to be the username value**/ is at: " + player1HP/**I want this to be the hp value + player1HP**/ + " hp.");//I want this command to print out "ProGamer is at: 3 hp."
}
}
输出:
如何获取";username";和";Health";的值?
解决方案
可以使用regular expression确保输入有效。
然后可以调用方法split将命令分成单独的单词。
import java.util.Scanner;
public class StackOverflowExample {
public static void main(String[] args) {
System.out.println("Healing Command: ~heal [username] [health]");
int player1HP = 0;
Scanner userInteraction = new Scanner(System.in);
String userInput = userInteraction.nextLine();
if (userInput.matches("^~heal [^ ]+ \d+$")) {
String[] parts = userInput.split(" ");
int health = Integer.parseInt(parts[2]);
player1HP += health;
String player = parts[1];
System.out.printf("%s is at: %d hp.%n", player, player1HP);
}
}
}
正则表达式检查输入的命令是否以~heal
开头,后跟一个空格,后跟一个或多个不是空格的字符,然后是另一个空格,后跟一个或多个数字。
然后在空格上拆分输入的命令,这将返回一个三元数组,其中第一个数组元素是命令(即~heal
),第二个元素是玩家姓名,最后一个元素是生命值。
相关文章