在Java程序中,我具有以下字符串:
a= 8,7,"+"
b=1,5,"*"
每行是一个单独的过程。我想在每一行中使用该运算符计算出两个数字。但是我不想使用任何类型的条件系统来检测每行中的哪个运算符。
实际上,我的主要问题是在没有条件的情况下检测操作员的类型。我不想使用Javascript引擎。我想知道是否有任何有效和标准的方法。
J. Selva回应的另一个解决方案:
改进之处
导入java.util.HashMap; 导入java.util.Map;
/**
* Created by SEA-HAWK on 23/8/15.
*/
public abstract class Expr {
public static Map<String,Object> op;
static{
op=new HashMap<>();
op.put("+", new Expr() {
@Override
public int evaluate(int a, int b) {
return a + b;
}
});
op.put("-", new Expr() {
@Override
public int evaluate(int a, int b) {
return a - b;
}
});
op.put("*", new Expr() {
@Override
public int evaluate(int a, int b) {
return a * b;
}
});
op.put("/", new Expr() {
@Override
public int evaluate(int a, int b) {
return a / b; // decimal point loss
}
});
}
abstract public int evaluate(int a, int b);
public static int exprEval(String expr){
String a[]=expr.split(",");
a[2]=a[2].replaceAll("\"","");
return ((Expr)op.get(a[2])).evaluate(Integer.parseInt(a[0]),Integer.parseInt(a[1]));
}
}
主功能:
public static void main(String[] args) {
String x="20,10,\"*\"";
System.out.println(x+"="+Expr.exprEval(x));
x="20,10,\"+\"";
System.out.println(x+"="+Expr.exprEval(x));
x="20,10,\"-\"";
System.out.println(x+"="+Expr.exprEval(x));
x="20,10,\"/\"";
System.out.println(x+"="+Expr.exprEval(x));
}
输出:
20,10,"*"=200
20,10,"+"=30
20,10,"-"=10
20,10,"/"=2
注意:更改数据类型以进行浮点/小数计算。
每当我在这个集合中保存一些数据时,我就声明了一个类LoanDetails和一个包含BigDecimal类型loanAmount的字段 它以字符串形式存储在mongo db数据库中 我试图在loanAmount字段上添加注释
这章我们来着重介绍一下字符串。 刚刚学习Rust的同学可能会被Rust的字符串搞混掉,比如str,String, OsStr, CStr,CString等等…… 事实上,如果你不做FFI的话,常用的字符串类型就只有前两种。我们就来着重研究一下Rust的前两种字符串。 你要明白的是,Rust中的字符串实际上是被编码成UTF-8的一个字节数组。这么说比较拗口,简单来说,Rust字符串内部存储的是一个u
现在的Rust资料,无论是Book还是RustByExample都没有统一而完全的介绍Rust的操作符。一个很重要的原因就是,Rust的操作符号和C++大部分都是一模一样的。 一元操作符 顾名思义,一元操作符是专门对一个Rust元素进行操纵的操作符,主要包括以下几个: -: 取负,专门用于数值类型。 *: 解引用。这是一个很有用的符号,和Deref(DerefMut)这个trait关联密切。 !:
问题内容: 我有一个输入String说。许多浏览器/ IDE /应用程序都会检测到字符串的url部分,并自动添加锚点。这样就变成了。 我需要使用Java进行相同的操作。 问题答案: 为此使用java.net.URL! 嘿,为什么不对这个“ java.net.URL”使用Java的核心类,而让它验证URL。 尽管以下代码违反了“仅在特殊情况下使用异常”这一黄金原则,但对Java平台上已经成熟的某些东
我知道这个问题很简单。但我想知道布尔运算符的字符串格式。例如,下面显示了整数、字符串和浮点数的字符串格式。布尔运算符真/假可能是什么?
问题内容: 我对String串联感到困惑。 输出为: 50abc20 50abc1010 我想知道为什么在两种情况下都将 20 + 30 加在一起,但是 10 + 10 需要加上括号(s1)而不是串联到String(s2)。请在此处说明String运算符的工作方式。 问题答案: 加法保持关联。以第一种情况 在第二种情况下: