在每个循环中更改数组值不起作用java

时间:2018-07-13 07:40:48

标签: java for-loop foreach

我对于类的代码不起作用感到困惑。我试图更改每个循环中的数组值,并且从每个循环中正确打印,但未存储正确的值后缀。我希望两个结果都为{2.0, 4.0, 6.0, 8.0, 10.0},但第二张显示为{10.0, 2.0, 3.0, 4.0, 5.0}

double speed [] = {1,2,3,4,5};
for(double each : speed){
    int i = 0;
    each *= 2;
    speed[i] = each;
    i++;
}

for(double each : speed){
    System.out.println("\n" + each);
}

3 个答案:

答案 0 :(得分:3)

您在循环内声明了 <div class="row"> <div class="col-sm-4"> <div class="index-content"> <div class="card"> <img src="https://image.ibb.co/iiWA2T/bmw_1.jpg"> <div class="card-content"> <h4>BMW NEW MODELS</h4> <a href="#" class="blue-button">Read More</a> </div> </div> </div> </div> <div class="col-sm-8"> <div class="card"> <img src="https://image.ibb.co/nJ97Go/bmw.jpg" style="width: 100%;"> <div class="card-content"> <h4>BMW NEW MODELS</h4> <!-- <p>Brødtekst</p> --> <a href="#" class="blue-button">Read More</a> </div> </div> </div> </div> ,因此i无效,每次迭代都会将其重新初始化为0。

答案 1 :(得分:0)

正如安德里亚(Andrea)在回答中所说,问题在于您在每次迭代时都重新声明i。所以你真正想要的是

double speed [] = {1,2,3,4,5};

int i = 0;
for(double each : speed){
    each *= 2;
    speed[i] = each;
    i++;
}

for(double each : speed){
    System.out.println("\n" + each);
}

BUT ,除非这是一个玩具示例,否则恕我直言,它不是正确的结构。由于您需要访问要迭代的索引,并且speed是一个简单的数组,因此实际的实际需求可能是普通的for。所以

double speed [] = {1,2,3,4,5};
for(int i = 0; i < speed.length; i++){
    speed[i] *= 2;
}

for(double each : speed){
    System.out.println("\n" + each);
}

答案 2 :(得分:0)

是,输出正确。但是,如果要打印{2.0, 4.0, 6.0, 8.0, 10.0},则代码应为

double speed [] = {1,2,3,4,5};
    int i = 0;
    for(double each : speed){           
        each *= 2;
        speed[i] = each;
        i++;
    }
    for(double each : speed){
        System.out.println("\n" + each);
    }

即变量 i 应该在每个循环之外的中初始化。