How do I check for specific parts in a userInput command?(如何检查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
),第二个元素是玩家姓名,最后一个元素是生命值。
这篇关于如何检查userInput命令中的特定部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何检查userInput命令中的特定部分?
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 获取数字的最后一位 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 转换 ldap 日期 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01