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