我需要帮助将字符串分成单独的变量。我试图制作一个程序,将使用nextLine()获取用户输入然后我需要分离该字符串中的字符。
例如,用户可以输入23plus或2 3 +。
我读过.split,但只有在输入中有空格时才能使用.split。我可以说第一个数字是charAt(0),但我怎么能得到其余的?
答案 0 :(得分:1)
你说,问题是'一位数计算器',带有后缀符号23+:
digits = digits.replaceAll( "\\\\s","" );
int op1 = Integer.parseInt( digits.charAt(0));
int op2 = Integer.parseInt( digits.charAt(1));
digits.charAt(2)
,因为我建议使用+, - ,/,*,用于交换机/案例答案 1 :(得分:0)
如何通过char循环遍历String
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"));
}
如果这是家庭作业(我怀疑它是),这可能不是一个可接受的解决方案。