哟 - 试图回到 java,所以决定创建一个计算器。
假设它是这样工作的:
1) 以字符串的形式获取用户的输入 -> 此输入存储为字符串,例如: 12+89
2) 根据操作符位置拆分字符串,并确保在此操作之前的任何内容都转换为整数并存储
3) 一旦字符串通过,计算值
我很确定我把它弄得比实际情况更复杂 :p 这是目前为止的代码:
// Split String, count digits in string
public static void spitStrg() {
int numDigits = 0;
int numOperators = 0;
for (int i = 0; i < input.length(); i++) {
if (Character.isDigit(input.charAt(i))) {
numDigits++;
}
else if (input.charAt(i) == '+') {
System.out.println( "Position of operator: "+i);
numOperators++;
}
}
System.out.println("Number of Digits: "+numDigits);
System.out.println("Number of Operators: "+numOperators);
}
// Create a number from cut off point
public static void createNum(int startPoint, int operatorPosition) {
String tempNum = "";
for (int j = startPoint; j < operatorPosition; j++) {
tempNum = tempNum + input.charAt(startPoint);
}
}
有没有人对如何处理此问题有任何其他建议? IE。一次请求一个数字,然后是运算符或将所有内容存储在一个 vector 中以反射(reflect)越来越多的数字和运算符?
最佳答案
不确定这是否适合您。 (或者作弊?)
您只需让用户将整个表达式作为字符串输入。 23+33-34*2^2
然后你可以:
try {
final ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
final Object result = engine.eval("23+33-34*2^2");
System.out.println(result);
} catch (final ScriptException e) {
e.printStackTrace();
}
运行上面的代码,会给你:
-10
关于java - 在基于命令行的计算器程序中处理输入的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12729602/