数组之和,两种相同方法的结果不同

时间:2015-10-08 14:41:06

标签: java arrays for-loop

我有两个数组,我想要一些元素,但在一个方法中,我只是为了得到数组中的元素列表。

错误的数组:

 int[] names = {1, 24, 4, 50, 4, 1};

    int suma = 0;
    for (int i = 0; i < names.length; i++) {

        suma += names[i];

        System.out.println("suma" + suma);

    }

我有结果:suma 1,suma 24 ......

但这很严格:

int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int sum = 0;
    for (int i = 0; i < numbers.length; i++) {
        sum += numbers[i];
    }
    System.out.println("The sum is: " + sum);

我很困惑。

2 个答案:

答案 0 :(得分:0)

在这种情况下,在循环内部打印,因此suma将在数组中的每个元素上打印一次。

for (int i = 0; i < names.length; i++) {
    suma += names[i];
    // inside the loop scope
    System.out.println("suma" + suma);
} // end of loop scope

在第二个中,它不在循环范围内,因此,仅在循环完成时打印总和

for (int i = 0; i < numbers.length; i++) {
    sum += numbers[i];
}  // end of loop scope
// outside the loop scope
System.out.println("The sum is: " + sum);

答案 1 :(得分:0)

在第一段代码中:

for (int i = 0; i < names.length; i++) {
  suma += names[i];
  System.out.println("suma" + suma);
}

for {...}

范围内有两个陈述
  1. suma += names[i];
  2. System.out.println("suma" + suma);
  3. 每次for循环运行时,它都有两个要执行的语句。这就是为什么在第一种情况下你输出的原因是:

    suma1
    suma25
    suma29
    suma79
    suma83
    suma84
    

    因为System.out.println("suma" + suma);正在执行names.length次。

    然而在第二种情况下:

    for (int i = 0; i < numbers.length; i++) {
      sum += numbers[i];
    }
    

    循环只有一个语句可以执行names.length次。输出打印在循环之外,这就是输出的原因:

    The sum is: 55