首页 > 解决方案 > 编写一个名为 repeats_exist(numbers) 的静态方法,该方法将整数数组作为参数

问题描述

编写一个名为 repeats_exist(numbers) 的静态方法,该方法将整数数组作为参数,如果数组中有任何重复值,则返回 true,如果数组中的所有值都是唯一的,则返回 false。注意:您可以假设数组不为空,并且该方法返回一个布尔值。

For example:

Test                                                             Result
System.out.println(repeats_exist(new int[]{2, 3, 4, 5, 6}));     false
System.out.println(repeats_exist(new int[]{2, 3, 4, 3, 6}));     true

这是我的尝试,但仍然有错误。请帮我解决问题。

static boolean repeats_exist(int a[],int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]==a[j])
                return true;
        }
    }
    return false;
}

标签: javaarrays

解决方案


像这样改变方法

static boolean repeats_exist(int a[])
    {
        int i,j;
        for(i=0;i<a.length;i++)
        {
            for(j=i+1;j<a.length;j++)
            {
                if(a[i]==a[j])
                    return true;
            }
        }
        return false;
    }

并且错误将消失

作为示例提供的方法中只有一个参数值。

System.out.println(repeats_exist(new int[]{2, 3, 4, 5, 6}));

但是,声明的方法需要两个参数。也许这就是错误的原因。

我们需要匹配方法声明和调用的参数数量。 在此处输入图像描述

或者,当你调用一个方法时,你可以调整参数的个数来得到一个正常的结果。

但是因为你必须直接输入 n 的值[这将是这段代码中数组 a 的长度],这很烦人,并且可能导致其他错误。

public class StackOver
{

    static boolean repeats_exist(int a[], int n)
    {
        int i,j;
        for(i=0;i< n;i++)
        {
            for(j=i+1;j< n;j++)
            {
                if(a[i]==a[j])
                    return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {

        System.out.println(repeats_exist(new int[]{2, 3, 4, 5, 6}, 5));
        System.out.println(repeats_exist(new int[]{2, 3, 4, 3, 6}, 5)); 
    }
 }

如果你没有正确输入 ' n' 值,它可能无法正确扫描,导致不正确的结果,或者发生错误(java.lang.ArrayIndexOutOfBoundsException),所以我推荐第一种使用传递给参数的数组长度的方法。


推荐阅读