Java 从不同字符的字符串返回整数

Java 从不同字符的字符串返回整数,java,Java,我无法正确打印此字符串。 "34+23 * 15 +-10 // ** =?=". 它存储在一个称为字符串输入的变量中; 我试图将每个不同的变量类型分离为不同的标记。 例如,如果我找到整数,我就把它们分组,如果我找到符号,我就把它们分组 我检查了两位数的整数。但是我在检查XX,XXX,XXXX的整数时遇到了问题。表示不同数字的整数,而不仅仅是两个数字 if(Character.isDigit(input.charAt(i)) && Characted.isDigit(input

我无法正确打印此字符串。 "34+23 * 15 +-10 // ** =?=". 它存储在一个称为字符串输入的变量中; 我试图将每个不同的变量类型分离为不同的标记。 例如,如果我找到整数,我就把它们分组,如果我找到符号,我就把它们分组

我检查了两位数的整数。但是我在检查XX,XXX,XXXX的整数时遇到了问题。表示不同数字的整数,而不仅仅是两个数字

if(Character.isDigit(input.charAt(i)) && Characted.isDigit(input.charAt(i+1)){ //checking for integers
    count++;
    temp = input.substring(input.charAt(i), input.charAt(i+1));
    count = Integer.parseInt(temp);

    continue;   
}
你应该看看。这是一个如何从字符串中提取数字的示例:

      List<Integer> numbers = new ArrayList<Integer>();
      Pattern pattern = Pattern.compile("-?\\d+");
      Matcher matcher = pattern.matcher(str);
      while (matcher.find()) {
         numbers.add(Integer.valueOf(matcher.group()));
List number=new ArrayList();
Pattern=Pattern.compile(“-?\\d+”);
Matcher-Matcher=pattern.Matcher(str);
while(matcher.find()){
add(Integer.valueOf(matcher.group());

这甚至适用于负数,如果我没有弄错十进制数的话。

你是在问如何为循环编写

int j; // Declaration outside for, so the variable persists
for(j = i; Character.isDigit(input.charAt(j)); ++j); // Semicolon to do nothing in the loop, besides increasing j.
if(j > i)
{
    count = Integer.parseInt(input.substring(i, j));
    continue;
}

我忽略了计数+++
,因为您正在覆盖它,不确定您打算在那里做什么。

您在这里有几个选项。您可以修改您正在使用的方法。如果您保存到目前为止的数字并执行以下操作:

String numberSofar = "";
for(char c : inputString){
   if(Character.isDigit(c)
      numberSoFar+=c;
   else{
      digits+= Integer.parseInt(c);
   }
}
类似的方法会奏效,但会有一些退步。它非常冗长,速度也非常慢(除非你有数百万个数字,否则这可能没什么关系,但仍然…)

另一个选择是使用正则表达式

  int sum = 0;
  Pattern pattern = Pattern.compile("\\d+");
  Matcher matcher = pattern.matcher(str);
  while (matcher.find()) {
     sum += Integer.parseInt(matcher.group()));

然而,如果你真的想得到不是数字的东西,它会变得更复杂一些(或者你可以做两个循环,只需寻找与你第一次寻找的相反的东西。^将允许你这样做。

如果你总是有自然数,那么读取每个数字并将其添加到字符串中,直到找到一个非数字字符为止(
+
或``等)。如果发生这种情况,请将其转换为整数。这不是一个漂亮的代码,但可能有助于您解决任务。