使用以下方法给出arr [i] = i-1的数组,输出是什么?

问题描述 投票:0回答:1

我得到了以下用伪代码编写的方法

for i=1 to floor(n/2)
    if arr[i] != 0 then
       for(j=2 to floor(n/i)
         arr[i*j] = 0

我需要找到输出并证明它确实是输出。

到目前为止,我试图用Java编写代码,并尝试使用不同的输入和数组大小,但无济于事。如果有帮助的话,放在这里:

public class Checking
{
    private static int method(int[] A,int n)
    {
        for (int i=1;i<=java.lang.Math.floor(n/2);i++)
        {
            if(A[i] != 0)
            {
                for(int j=2;j<=java.lang.Math.floor(n/i);j++)
                {
                    A[i*j]=0;
                    System.out.println("The index ofA["+i*j+"] became "+A[i*j]);
                }
            }

            //System.out.print(", "+A[i]);
        }

        for (int i=1;i<=java.lang.Math.floor(n/2);i++)
        {
            System.out.print(", "+A[i]);
        }

        return 0;
    }

    public static void main(String[] args)
    {
        int[] A = {-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
        System.out.println(method(A,20));
    }
}

谢谢。

arrays algorithm methods
1个回答
0
投票

您可以更改以下内容:

在您的主要方法中删除

System.out.println(method(A,20));

因为当您返回0时它将始终显示0;来自method()。

当您在method()中打印所有内容时,更改以下内容(因为它不打印完整的数组,而是从索引1(缺少索引0)到楼n / 2,]]

for (int i=1;i<=java.lang.Math.floor(n/2);i++)
        {
            System.out.print(", "+A[i]);
        }

for (int i=0;i<A.length; i++)
        {
            System.out.print(", "+A[i]);
        }

所以您可以打印整个数组。

为简单起见,您可以使用Array的print方法来打印没有for循环的数组

System.out.println(Arrays.toString(A));
© www.soinside.com 2019 - 2024. All rights reserved.