数组和for循环如何一起工作?

时间:2014-10-05 17:41:39

标签: java arrays loops for-loop

我知道数组用于存储值,但是当它们与for循环一起使用时,我会忽略正在发生的事情。我知道输出是100,因为我在终端中运行它,但我需要理解的是它是如何从使用for循环和数组得到100因为我不确定它是否使用所有三个值或只是第一。提前致谢

问题在于:

public class arrays {

    public static void main (String[] args) {

        int[] a1 = {1, 1, 3};
        mystery(a1);

    }
    public static void mystery(int[] a) {
        for (int i = 1; i < a.length - 1; i++) {
            a[i] = (a[i - 1] + a[i + 1]) /2;
        }
    }
}

4 个答案:

答案 0 :(得分:0)

不完全确定你要问的问题是 - 尝试和帮助 - 每次调用[i]时它是否有帮助,它需要i的值(也是迭代次数)在每个实例上并使用它来查找相关的数组索引 - 然后将其用于其余的计算。

答案 1 :(得分:0)

尝试添加此方法进行跟踪。

public class arrays{

public static void main(String[] args) {

    int[] a1 = {1, 1, 3};
    mystery(a1);

}
public static void mystery(int[] a) {
    for (int i = 1; i < a.length - 1; i++) {
        a[i] = (a[i - 1] + a[i + 1]) /2;
        printArray(a);
    }


public void printArray(int[] arr){
 for(int i=0;i<arr.length;i++){
  System.out.println("array[" + i + "] is now " + arr[i]);
 }
}
编辑:那么后期会发生什么?

  1. for循环将i初始化为1。
  2. a [1] (之前为'1')变为( a [0] + a [2] )/ 2 =( 1 + 3 )/ 2 = 2
  3. i增加1
  4. 我不满足条件(i
  5. 循环终止,程序也是如此。
  6. 我认为您缺少的是 i 不代表数组中数字1的索引,它是在上下文中使用时的索引本身[ i ]的意思是“转到a,索引 ...”

答案 2 :(得分:0)

调用方法错误(a1)时会发生什么:

1。 int i初始化为1

2。条件if i*a.length-1, which is (3-1)已被检查;这种情况属实;

3。因为 2。的条件为true,所以执行for循环中的代码:

a[i] = (a[i - 1] + a[i + 1]) /2 => a[1] = (a[1-1]+a[1+1])/2 => a[1]=(a[0]+a[2])/2 =>

=> a[1]=(1+3)/2 => a[1]=2
执行for循环中的代码后,

4。i增加1,因此执行此for循环的最后一个阶段:i++i现在等于2。

5. 再次,for循环检查条件i<a.length-1, (3-1)是否为true;这一次,条件是假的:i=2,2不小于2.

6。 for循环终止其#34;存在&#34;,在这种情况下,方法之谜(a1)已完全执行。

答案 3 :(得分:0)

你的问题不明确。如果你能清楚地提出问题,你会得到很好的答案!无论如何:

试着想一想自己。 数组位置从&#34; 0&#34;开始。它也被称为数组的索引。 这里的循环是从值开始的 i = 1到 i&lt; (array&#39; s length)-1 的值,即i&lt; 2作为数组的长度= 3

所以,

for(int i=1 ;  i < a.length - 1; i++){
 a[i] = (a[i - 1] + a[i + 1]) /2;
}

现在初始值为i = 1 ,然后自己在脑海中运行代码

1.. for i = 1,
**a[i] = (a[i - 1] + a[i + 1]) /2;**

gives a[1] = (a[0] + a[2])/2 ==> a[1] = (1+3)/2 ==> a[1] = 2


Important : you have given **i < a.length-1** 
Now, a.length = 3 ok?
a.length -1 = 2 ok?

so i< a.length-1 will stop at i equals 1

So, your program will give {1,2,3} as for loop will iterate from i =1 to i=1 got it?
So only 1 value i.e. a[1] will gets changed.. a[0] and a[2] will remain same.