该程序接收一个字符串,并将所有整数加起来,我已将定界符设置为“ +”,并由任意数量的空格包围。
它可以正常工作,但是现在我希望它也可以使用任何负整数,例如,如果我输入“ 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);
        }
  }

最佳答案

只需将+-放在字符类中。

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

10-02 11:26