我需要帮助将字符串分成单独的变量。我正在尝试制作一个使用 nextLine() 获取用户输入的程序,然后我需要分隔该字符串中的字符。
例如,用户可以输入行 23plus 或 2 3 plus。
我读过关于 .split 的内容,但这仅在输入中有空格时才有效。我可以说第一个数字是 charAt(0) 但我怎么能得到其余的?
您说,问题是带有后缀符号 23+ 的“一位数计算器”:
digits = digits.replaceAll( "\\\\s","" );
int op1 = Integer.parseInt( digits.charAt(0));
int op2 = Integer.parseInt( digits.charAt(1));
digits.charAt(2)
,正如我建议使用 +、-、/、* 一样,用于 switch/case如何String
通过 char 循环遍历 char 并检查它是否是数字:
final List<Integer> values = new LinkedList<>();
final StringBuilder operator = new StringBuilder();
for (final char c : input.toCharArray()) {
if (Character.isDigit(c)) {
values.add(Integer.parseInt(Character.toString(c)));
} else if (!Character.isWhitespace(c)) {
operator.append(c);
}
}
注意:这只有在输入的形式为“WdigitWdigitWoperator”时才有效,其中“W”是可选的空格。
但我明白你的问题就是这种情况。
另一种选择是使用正则表达式,这看起来像:
final Pattern p = Pattern.compile("^\\s*+(?<firstDigit>\\d)\\s*+(?<secondDigit>\\d)\\s*+(?<operator>\\w++)$");
final Matcher matcher = p.matcher(input);
if(matcher.matches()) {
System.out.println(matcher.group("firstDigit"));
System.out.println(matcher.group("secondDigit"));
System.out.println(matcher.group("operator"));
}
如果这是一个家庭作业(我怀疑它是),那么这可能不是一个可接受的解决方案。