在字符串中添加和减去数字

时间:2015-06-15 06:32:00

标签: java regex string delimiter

这个程序接受一个字符串并将其中的所有整数相加,我将分隔符设置为“+”,被任意数量的空格所包围。 它可以正常工作,但现在我希望它可以与任何负整数一起使用,例如,如果我输入“8 + 33 + 1,345 - 37”;输出是41.它甚至没有达到1,345 或从总数中减去-37。分隔符是否“被跳过”?例如,如果我说编译器转到8然后再跳过“+”然后转到33那么我会是正确的吗?如果我 将分隔符设置为“\ s * \ + | - \ s *”(尝试+或 - ),输出仍为41,为什么?

import java.util.*; 

import java.io.*;

public class Add_em_up
  {

            public static void main (String args [])            

        {     

            Scanner x = new Scanner (System.in);


            System.out.print("Enter something like 8 + 33 + 1,345 + 137 :");


            String s = x.nextLine();

            Scanner sc1 = new Scanner (s);
            sc1.useDelimiter("\\s*\\+\\s*");                

            int sum = 0;
            while (sc1.hasNextInt())
            {
                sc1.skip(",*");
                if (sc1.hasNextInt())
                {
                    sum = sum + sc1.nextInt();                 
                }

            }
            System.out.println("Sum is: " + sum);
        }
  }

2 个答案:

答案 0 :(得分:3)

只需将+-放入角色类。

sc1.useDelimiter("\\s*[-+]\\s*");    

答案 1 :(得分:1)

如果您对使用库Exp4j感兴趣,可以使用这个简单的解决方案。图书馆将完成所有计算,您要做的就是通过等式并得到结果。

这是一个例子。

static