【发布时间】:2013-05-23 02:47:01
【问题描述】:
我试图简化这个 if 语句以避免代码重复和 if 语句。我还希望能够传递超过 2 个参数。即 5+10*2/2。有什么想法吗?
public static double randomExpressionDraft(String exp) {
double primeResult = 0;
double newResult = 0;
for (int i = 0; i < exp.length(); i++) {
if (exp.charAt(i) == '*') {
newResult = Integer.parseInt(exp.substring(0, i)) * Integer.parseInt(exp.substring(i + 1, exp.length()));
primeResult = newResult;
System.out.println(primeResult);
} else if (exp.charAt(i) == '/') {
newResult = Integer.parseInt(exp.substring(0, i)) / Integer.parseInt(exp.substring(i + 1, exp.length()));
primeResult = newResult;
System.out.println(primeResult);
} else if (exp.charAt(i) == '+') {
newResult = Integer.parseInt(exp.substring(0, i)) + Integer.parseInt(exp.substring(i + 1, exp.length()));
primeResult = newResult;
System.out.println(primeResult);
} else if (exp.charAt(i) == '-') {
newResult = Integer.parseInt(exp.substring(0, i)) - Integer.parseInt(exp.substring(i + 1, exp.length()));
primeResult = newResult;
System.out.println(primeResult);
}
}
return primeResult;
}
【问题讨论】:
-
一种更好的方法是使用 switch,不带中断,默认使用两个语句,即 primeResult = newResult;和 System.out.println(primeResult);
-
您的代码也不会评估为正确答案,因为您没有首先考虑 *, /
-
不要因为您不喜欢答案而重新发布相同的问题。编辑原始问题。
标签: java if-statement for-loop expression