我需要帮助将字符串分隔成单独的变量。我试图让一个程序,将得到用户输入使用nextLine()然后我需要分开该字符串中的字符。将字符串分隔成不带数组的单独变量
例如,用户可以输入行23plus或2 3 plus。
我已阅读.split,但只有在输入中有空格时才有效。我可以说,第一个数字是charAt(0),但我如何得到其余的?
我需要帮助将字符串分隔成单独的变量。我试图让一个程序,将得到用户输入使用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)
,如我建议使用+, - ,/,*,用于开关/外壳“用户可以输入行23plus或2 3加” - 这不能很好地处理第二种情况...... –
“一位数字计算器”非常简单明了。 – Aubin
如果在索引1处有空格,这将如何工作会有空间? –
如何通过焦炭循环在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"));
}
如果这是一个家庭作业(我怀疑它是)这可能不是然而,可接受的解决方案。
程序如何区分'23plus'和'23 plus'意味着'23 plus'和'23 plus'意思是'2 3 plus'? – gzm0
这没有意义。鉴于输入“1234plus”,你的逻辑做了什么? '12 34 plus''1 234 plus'? –
除非您知道线条的一般结构以及如何拆分线条,否则不能拆分线条。如果我们需要帮助,您需要告诉我们这些事情以及更多可能的输入和输出示例。正如你所写的,你的问题没有意义,也不应负责任。 –