从字符串中添加和减去数字
Adding and Subtracting numbers from a String
这个程序接受一个字符串并将其中的所有整数相加,我将分隔符设置为“+”,并用任意数量的白色包围space。
它可以正常工作,但现在我希望它也可以使用任何负整数,例如,如果我输入“8 + 33 + 1,345 - 37”;输出是 41.It 甚至没有达到 1,345
或从总数中减去 -37。分隔符是 "skipped" 吗?例如,如果我说编译器转到 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);
}
}
只需将+
、-
放在一个字符class内即可。
sc1.useDelimiter("\s*[-+]\s*");
好的,如果您有兴趣使用库 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();
这个程序接受一个字符串并将其中的所有整数相加,我将分隔符设置为“+”,并用任意数量的白色包围space。 它可以正常工作,但现在我希望它也可以使用任何负整数,例如,如果我输入“8 + 33 + 1,345 - 37”;输出是 41.It 甚至没有达到 1,345 或从总数中减去 -37。分隔符是 "skipped" 吗?例如,如果我说编译器转到 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);
}
}
只需将+
、-
放在一个字符class内即可。
sc1.useDelimiter("\s*[-+]\s*");
好的,如果您有兴趣使用库 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();