Java 将字符串分隔为不带数组的独立变量

Java 将字符串分隔为不带数组的独立变量,java,string,Java,String,我需要帮助将字符串分隔成单独的变量。我正在尝试制作一个程序,使用nextLine()获取用户输入,然后需要分离该字符串中的字符 例如,用户可以输入第23plus行或第23plus行 我读过关于.split的文章,但只有当输入中有空格时,它才会起作用。我可以说第一个数字是charAt(0),但是我怎么才能得到其余的呢 你说,问题是“一位数计算器”的后缀符号是23+: digits=digits.replaceAll(“\\\\s”和“”) 第一个数字:intop1=Integer.parseIn

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


例如,用户可以输入第23plus行或第23plus行


我读过关于.split的文章,但只有当输入中有空格时,它才会起作用。我可以说第一个数字是charAt(0),但是我怎么才能得到其余的呢

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

  • digits=digits.replaceAll(“\\\\s”和“”)
  • 第一个数字:
    intop1=Integer.parseInt(digits.charAt(0))
  • 第二位:
    intop2=Integer.parseInt(digits.charAt(1))
  • 运算符:
    数字。字符(2)
    ,我建议在开关/机箱中使用+,-,/,*
  • 结果:5

字符串上逐个字符循环并检查它是否是数字,怎么样:

    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);
        }
    }
final List values=new LinkedList();
最终StringBuilder运算符=新StringBuilder();
for(最终字符c:input.toCharArray()){
if(字符isDigit(c)){
add(Integer.parseInt(Character.toString(c));
}else如果(!Character.isWhitespace(c)){
附加运算符(c);
}
}
注意:仅当输入形式为“WdigitDigitWoOperator”,其中“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"));
    }
final Pattern p=Pattern.compile(“^\\s*+(?\\d)\\s*+(?\\d)\\s*+(?\\w++)$”;
最终匹配器匹配器=p.Matcher(输入);
if(matcher.matches()){
System.out.println(匹配器组(“第一位”);
System.out.println(匹配器组(“第二位”);
System.out.println(匹配器组(“运算符”);
}

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

您的程序如何区分
23plus
意思是
23plus
23plus
意思是
23 plus
?这没有意义。给定输入
1234plus
您的逻辑是什么
12 34 plus
1 234 plus
?除非您知道行的一般结构以及如何拆分,否则无法拆分行。如果我们想提供帮助,您需要告诉我们这些事情以及更多可能的输入和输出示例。正如你写的那样,你的问题没有意义,也没有答案。它应该是一个单位数字的计算器。我会取一个数字,然后执行“我读到过。拆分,但只有在输入中有空格时才有效”的操作。这一操作甚至一点都不正确:您也可以查看,甚至只是和。“用户可以输入第23plus行或第23plus行”-这不能很好地处理第二种情况…如果索引1中有空格,那么这将如何工作?使用
s.replaceAll(“\\s”,“”)清除空格
@Aubin如果你在答案中加入这一点,我将取消否决票,因为你的答案将完全回答问题。