打印出来的java练习说明

时间:2017-05-15 14:33:29

标签: java

我正在尝试理解以下Java练习。即使运行调试器,我也不了解第二次和第三次打印输出的细节:

  

1,2,3,4

     

1,2,4,4

     

1,2,4,8

据我所知,第一个打印是数组,第二行是打印[2]元素的数组和第三行[3]元素。这是代码:

public class TR1
{
    public static void main(String[] args)
    {
        int[] v =  {1, 2, 3, 4 };
        print(v);
        x(v, v[2] - 1);
        print(v);
        x(v, v[3] - 1);
        print(v);
    }

    public static void x(int array[], int y)
    {
        array[y] = array[y - 1] * 2;
    }

    public static void print(int array[])
    {
        System.out.print(array[0]);
        for (int i = 1; i < array.length; i++)
            System.out.print(", " + array[i]);
        System.out.println();
    }
}

3 个答案:

答案 0 :(得分:5)

让我们简要介绍一下发生的第一件事。你从这个数组开始:

1 2 3 4

打印时毫不奇怪。

然后你跑:

x(v, v[2] -1 ) ... evaluates to

x(v, 3 - 1)    ... evaluates to

x(v, 2)

基于以下内容更改数组:

array[y] = array[y - 1] * 2;

让我们将y插入2(见上文):

array[2] = array[1] * 2;

array[2] = 2 * 2;

导致:

1, 2, 4, 4

所以,真正的答案是:你甚至不需要调试器。一张纸,一支笔和一点点思考更有效地揭示了这些秘密&#34;这里。

答案 1 :(得分:2)

让我们看看这个方法的作用:

public static void x(int array[], int y)
    {
        array[y] = array[y - 1] * 2;
    }

它采用索引y-1处的值,将其乘以2,然后将此结果分配给索引y

启动数组:{1,2,3,4}

使用v[2] - 1的来电获取索引23)的值,并选择1,我们拥有y = 2

根据我们之前所说的,该方法获取索引1y-1)的值2,将其乘以2,以便我们获得{{1} },并将其分配给索引42)。

当前数组:y

使用{1,2,4,4}的来电获取索引v[3] - 13)的值,并选择4,我们拥有1

根据我们之前所说的,该方法获取索引y = 32)的值y-1,将其乘以4,以便我们获得{{1} },并将其分配给索引28)。

当前数组:3

答案 2 :(得分:1)

print始终打印整个数组。 xy正在对数组进行更改。

请记住,v[x]只是一个整数。例如,v[2]最初只是3,因此v[2] - 1 = 2。因此,它会在v[2]的第一次和第二次调用之间修改print

相关问题