如何解决为什么此输出为0.0 0.0 0.0 0.0而不是execute方法的返回计算?
我正在尝试让main方法为数组的每次迭代打印来自execute方法的switch语句的返回结果。但是,输出为:
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],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],rightVal[i]);
}
在您的execute方法中,返回双精度结果。用它作为赋值来填充结果数组。
for (int i = 0; i < opCodes.length; i++) {
results[i] = execute(opCodes[i],rightVal[i]);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。