将字符串分成不带数组的单独变量

时间:2013-04-01 21:45:24

标签: java string

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

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

我读过.split,但只有在输入中有空格时才能使用.split。我可以说第一个数字是charAt(0),但我怎么能得到其余的?

2 个答案:

答案 0 :(得分:1)

你说,问题是'一位数计算器',带有后缀符号23+:

  • digits = digits.replaceAll( "\\\\s","" );
  • 第一个数字:int op1 = Integer.parseInt( digits.charAt(0));
  • 第二位数:int op2 = Integer.parseInt( digits.charAt(1));
  • 运营商:digits.charAt(2),因为我建议使用+, - ,/,*,用于交换机/案例
  • 结果:5

答案 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"));
    }

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