-1

我需要帮助将字符串分成单独的变量。我正在尝试制作一个使用 nextLine() 获取用户输入的程序,然后我需要分隔该字符串中的字符。

例如,用户可以输入行 23plus 或 2 3 plus。

我读过关于 .split 的内容,但这仅在输入中有空格时才有效。我可以说第一个数字是 charAt(0) 但我怎么能得到其余的?

4

2 回答 2

1

您说,问题是带有后缀符号 23+ 的“一位数计算器”:

  • digits = digits.replaceAll( "\\\\s","" );
  • 第一个数字:int op1 = Integer.parseInt( digits.charAt(0));
  • 第二位数:int op2 = Integer.parseInt( digits.charAt(1));
  • operator : digits.charAt(2),正如我建议使用 +、-、/、* 一样,用于 switch/case
  • 结果:5
于 2013-04-01T21:51:09.873 回答
0

如何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"));
    }

如果这是一个家庭作业(我怀疑它是),那么这可能不是一个可接受的解决方案。

于 2013-04-01T21:55:22.603 回答