在我的情况下,用户可以输入
f 0 ,f 1, f 2//1 digit
p 0, p 1 ,p 2//1 digit
j 0 1, j 0 2, j 1 0....(any combination of 0,1,2) //2 digits
q ,Q //for quit
我用
str = scanner.nextLine();//get the whole line of input
if(str.matches("[fpjq]\\s[012]"))......//check vaild input
char1=str .charAt(0);//get the first letter
然后我想现在得到下一个数字。
任何字符串方法都可以将字符串中的下一个数字提取为Int格式?
但是,我的方法仍然存在一些错误。例如,它可以退出QQ或qq或q +任何字母的程序
可以提供更好的方法吗?
例如p 0 1
char1 = str .charAt(0); //得到p
现在我想获得0和1并存储到int
答案 0 :(得分:2)
您可以在正则表达式中使用capturing groups (...)
来提取匹配数据的部分内容:
str = scanner.nextLine();
Pattern regex = Pattern.compile("^([fpjq])(?:\\s+([012]))?(?:\\s+([012]))?$");
Matcher matcher = regex.matcher(str.trim());
if (matcher.find()) {
String letter = matcher.group(1);
String digit1 = matcher.group(2); // null if none
String digit2 = matcher.group(3); // null if none
// use Integer.parseInt to convert to int...
} else {
// invalid input
}
答案 1 :(得分:0)
我会分开空格。
String input = "j 0 1";
String[] parts = input.split(" ");
String command = parts[0];
int arg1 = Integer.parseInt(parts[1]);
int arg2 = Integer.parseInt(parts[2]);