在数组中乘以两个双精度时接收0.0

时间:2014-11-23 20:03:25

标签: java arrays

我在阵列中乘以两个双打时遇到了很多麻烦。无论我做什么,结果似乎总是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

3 个答案:

答案 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