[英]Why does this output 0.0 0.0 0.0 0.0 rather than the execute method's return calculations?
我試圖讓 main 方法為 arrays 的每次迭代打印 execute 方法的 switch 語句的返回結果。但是,output 是:
0.0 0.0 0.0 0.0
誰能告訴我為什么會這樣?
public static void main(String[] args) {
double[] leftVal = {100.0d, 25.0d, 225.0d, 11.0d};
double[] rightVal = {50.0d, 92.0d, 17.0d, 3.0d};
char[] opCodes = {'d', 'a', 's', 'm'};
double[] results = new double[opCodes.length];
for (int i = 0; i < opCodes.length; i++) {
execute(opCodes[i], leftVal[i], rightVal[i]);
}
for (double currentResult : results) {
System.out.println(currentResult);
}
}
static double execute(char opCodes, double leftVal, double rightVal) {
double result;
switch (opCodes) {
case 'a':
result = leftVal + rightVal;
break;
case 's':
result = leftVal - rightVal;
break;
case 'm':
result = leftVal * rightVal;
break;
case 'd':
result = rightVal != 0 ? leftVal / rightVal : 0.0d;
break;
default:
System.out.println("Invalid opCode: " + opCodes);
result = 0.0d;
break;
}
return result;
}
}
您缺少作業,沒有填充results
數組。 您可能正在尋找這個:
for (int i = 0; i < opCodes.length; i++) {
results[i] = execute(opCodes[i], leftVal[i], rightVal[i]);
}
我看到的第一件事是,你不使用 return double
public static void main(String[] args) {
double[] leftVal = {100.0d, 25.0d, 225.0d, 11.0d};
double[] rightVal = {50.0d, 92.0d, 17.0d, 3.0d};
char[] opCodes = {'d', 'a', 's', 'm'};
double[] results = new double[opCodes.length];
for (int i = 0; i < opCodes.length; i++) {
results[i] = execute(opCodes[i], leftVal[i], rightVal[i]);
}
for (double currentResult : results) {
System.out.println(currentResult);
}
}
static double execute(char opCodes, double leftVal, double rightVal) {
double result;
switch (opCodes) {
case 'a':
result = leftVal + rightVal;
break;
case 's':
result = leftVal - rightVal;
break;
case 'm':
result = leftVal * rightVal;
break;
case 'd':
result = rightVal != 0 ? leftVal / rightVal : 0.0d;
break;
default:
System.out.println("Invalid opCode: " + opCodes);
result = 0.0d;
break;
}
return result;
}
}
它應該像這樣工作,如果你的方法像它應該的那樣工作
在 for 語句中,沒有用值填充數組的賦值。
for (int i = 0; i < opCodes.length; i++) {
execute(opCodes[i], leftVal[i], rightVal[i]);
}
在您的 execute 方法中,您返回 double 結果。 使用它作為賦值來填充結果數組。
for (int i = 0; i < opCodes.length; i++) {
results[i] = execute(opCodes[i], leftVal[i], rightVal[i]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.