【发布时间】:2014-10-22 15:15:30
【问题描述】:
好的...我想我可能已经试图简化这段代码了。我将( *, +, /, -) 等运算符放在一个拆分中。知道我想单独打电话给他们在if (operators.equals.(+)){ 中完成他们的透视任务
return num1 + num2. }
那么对于 *, -, / 透视
如何在我之前的代码中正确使用数学:
String function = "[+\\-*/]+"; //this
String[] token = input.split(function);//and this
double num1 = Double.parseDouble(token[0]);
double num2 = Double.parseDouble(token[1]);
double answer;
String operator = input.toCharArray()[token[0].length()]+"";
if (operator.matches(function) && (token[0]+token[1]+operator).length()==input.length()) {
System.out.println("Operation is " + operator+ ", numbers are " + token[0] + " and " + token[1]);
} else {
System.out.println("Your entry of " + input + " is invalid");
}
【问题讨论】:
-
抱歉,您的问题是什么?我在解析“在我之前的代码中使用数学时如何正确地做到这一点”时遇到问题?
-
我并不是要写数学,我的意思是,我怎样才能放置 if 和 if else 语句,以便返回带有两个数字的运算符。示例:num1 is 5 operator is * and num2 is 1, so answer is 5. 如果我的运算符都捆绑在索引中,我该怎么办?
-
所以您正在尝试构建计算器的解析器部分?很抱歉,但没有(简单的)方法可以映射“如果遇到此符号,请执行此操作”(您称之为“单独调用它们”)。您可以做的是将
token映射到方法名称并使用java 反射来调用该方法。但仅此而已。 -
另外,我不知道与您的 previous question 有何不同?
-
@mali,我实际上想将功能齐全的编写代码改进为行数更少的代码,因此我决定消除单独调用每个运算符的垃圾,现在我遇到了一个问题确保代码兼容。知道它们是捆绑的,如果选择的运算符是 + 调用返回 num1 + num2,我该怎么做。明白了吗?
标签: java if-statement split match