有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从字符串中加减数字

这个程序接收一个字符串并将其中的所有整数相加,我将分隔符设置为“+”并由任意数量的空格包围。 它可以很好地处理这个问题,但现在我希望它也可以处理任何负整数,例如,如果我输入“8+33+1345-37”;输出为41。甚至还没到1345年 或者从总数中减去-37。是否“跳过”分隔符?例如,如果我说编译器转到8,然后跳过“+”,然后转到33,我是否正确?如果我 将分隔符设置为“\s*\+\124;-\ 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) 个答案

  1. # 1 楼答案

    只需将+-放在字符类中

    sc1.useDelimiter("\\s*[-+]\\s*");    
    
  2. # 2 楼答案

    好的,如果您对使用库Exp4j感兴趣,这里有一个简单的解决方案。库将完成所有的计算,您所要做的就是传递方程并得到结果

    这里有一个例子

    Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
        .variables("x", "y")
        .build()
        .setVariable("x", 2.3)
        .setVariable("y", 3.14);
    double result = e.evaluate();