我在阵列中乘以两个双打时遇到了很多麻烦。无论我做什么,结果似乎总是0.0。我尝试过投射,将变量从double
更改为int
等等。我做错了什么?很难找到重复的问题,但我更确定有一个问题。有人可以指导我吗?
我的代码:
double[] speedK = {100.0, 80.0, 90.0, 110.0, 100.0};
double[] speedMPH = new double[speedK.length];
int n=0;
for(double speedTemp : speedK)
{
speedMPH[n]= (double)speedTemp * 1.15078;
}
System.out.println(speedMPH[0]);
当我尝试打印speedMPH
的任何值时,输出为0.0
答案 0 :(得分:1)
您只修改speedMPH
的第一个元素(n
始终为0
)。我建议使用普通的for循环,因为你需要当前的索引。
for (int i = 0; i < speedK.length; i++) {
speedMPH[i] = speedK[i] * 1.15078;
}
没有必要投射到double
。如果您确实想要使用增强型for循环,则需要增加n
:
int n = 0;
for(double speedTemp : speedK) {
speedMPH[n] = speedTemp * 1.15078;
n++;
}
答案 1 :(得分:0)
n
的价值永远不会增加。程序不断更改speedMPH[0]
的值,而不是数组的其他值。
尝试在循环中添加n++;
。
答案 2 :(得分:0)
我没有必要确定你为什么会遇到这个问题。通过查看它,我可以看到所有应该返回0.0,除了第一个索引或所谓的索引号0。
你使用n作为迭代器,但你永远不会增加它,因此你对speedMPH数组所做的所有输入都将进入索引0.这是我的代码,它运行得很好。
double[] speedK = {100.0, 80.0, 90.0, 110.0, 100.0};
double[] speedMPH = new double[speedK.length];
for (int i = 0; i < speedK.length; i++) {
double speedTemp = speedK[i];
speedMPH[i] = speedTemp * 1.15078;
}
for (int i = 0; i < speedMPH.length; i++) {
System.out.println(speedMPH[i]);
}
印刷:
115.07799999999999
92.0624
103.57019999999999
126.58579999999999
115.07799999999999