Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加StringArrayOfNumber的输出与预期不符_Java_Arrays - Fatal编程技术网

Java 添加StringArrayOfNumber的输出与预期不符

Java 添加StringArrayOfNumber的输出与预期不符,java,arrays,Java,Arrays,给定一个整数数组,检查数组中是否重复了任何数字。也就是说,数组是否有任何重复项 样本输入1 anyDuplicates({1,2,3,4}) 样本输出1 false 样本输入2 anyDuplicates({11,22,33,44,22) 样本输出2 true MyApproach 用于检查元素是否包含重复项。我进行了太多循环,并检查元素是否包含超过或等于2次重复。如果包含重复项,则返回false。否则返回true public boolean anyDuplicates(int[] a

给定一个整数数组,检查数组中是否重复了任何数字。也就是说,数组是否有任何重复项

样本输入1

anyDuplicates({1,2,3,4})
样本输出1

false
样本输入2

anyDuplicates({11,22,33,44,22)
样本输出2

true
MyApproach

用于检查元素是否包含重复项。我进行了太多循环,并检查元素是否包含超过或等于2次重复。如果包含重复项,则返回false。否则返回true

public boolean anyDuplicates(int[] arr) {
    
    boolean b1=false;
    int count=0;
    int z[]=new int[arr.length];
    for(int i=0; i<arr.length; i++) 
   {    count=0;                   //@Edit
        for(int j=0; j<arr.length; j++) {
            if(arr[i]==arr[j]) {
                count++;
            }
        }

        z[i]=count;

        if(z[i]>=2) {
            b1=true;
            break;
        }
    }
    
    if(b1==true)
        return true;
    else
        return false;
}
我的问题:为什么我没有得到预期的输出?

在您的代码中,更改: if((i!=j)&(arr[i]==arr[j]))

更干净:

public boolean anyDuplicates(int[] arr)
{
for(int i=0;i<arr.length;i++)
    {
    for(int j=0;j<arr.length;j++)
       if ((i!=j) && (arr[i]==arr[j]))
         return true;
    }

 return false;
}
public boolean anyDuplicates(int[]arr)
{
对于(int i=0;i设置
Set_Integer=newhashset(Arrays.asList(array_Integer));
//=>尺寸
int sz=Set_Integer.size();
返回(sz!=到达长度);
}
在代码中,更改: if((i!=j)&(arr[i]==arr[j]))

更干净:

public boolean anyDuplicates(int[] arr)
{
for(int i=0;i<arr.length;i++)
    {
    for(int j=0;j<arr.length;j++)
       if ((i!=j) && (arr[i]==arr[j]))
         return true;
    }

 return false;
}
public boolean anyDuplicates(int[]arr)
{
对于(int i=0;i设置
Set_Integer=newhashset(Arrays.asList(array_Integer));
//=>尺寸
int sz=Set_Integer.size();
返回(sz!=到达长度);
}
同样地更新代码

for(int i=0;i
同样地更新代码


for(int i=0;i您的代码有两个问题:


  • 您正在将每个元素与自身进行比较
  • 您还将每对数字进行两次比较,这可以减少为一次
  • 下面是一个示例代码,可以解决这两个问题:

    public boolean anyDuplicates(int[] arr) {
        for(int i=0; i<arr.length-1; i++) {
            for(int j=i+1; j<arr.length; j++)
                if (arr[i]==arr[j])
                    return true;
        }
    
        return false;
    }
    
    public boolean anyDuplicates(int[]arr){
    
    对于(int i=0;i代码中的两个问题:


  • 您正在将每个元素与自身进行比较
  • 您还将每对数字进行两次比较,这可以减少为一次
  • 下面是一个示例代码,可以解决这两个问题:

    public boolean anyDuplicates(int[] arr) {
        for(int i=0; i<arr.length-1; i++) {
            for(int j=i+1; j<arr.length; j++)
                if (arr[i]==arr[j])
                    return true;
        }
    
        return false;
    }
    
    public boolean anyDuplicates(int[]arr){
    
    对于(int i=0;i您正在将每个元素与自身进行比较…第一个示例的输出也是
    true
    。是否允许使用集合?:)
    返回集合。newHashSet(ary).size()!=ari.length
    @brso05我将每个元素与自身和其他元素进行比较。我假设它自然发生一次。因此,如果它大于或等于2,我将退出循环并返回false。您将每个元素与自身进行比较……第一个示例的输出也是
    true
    。您允许使用集合吗?:)
    return-Sets.newHashSet(ari).size()!=ari.length
    @brso05我将每个元素与自身和其他元素进行比较。我假设它自然出现一次。因此,如果它大于或等于2,我将退出循环并返回false。他的
    if
    语句也需要更改…
    1
    而不是
    2
    。他的
    if
    语句需要更改nge也…
    1
    而不是
    2
    @guillaunme你清理代码我喜欢它。我没有检查I!=j我在做额外的比较。这就是为什么我用计数>=2来打破循环。我假设每个元素都存在一次。我仍然无法找出我出错的原因result@guillaunme你干净的代码我喜欢。我不检查I!=j我正在做一个额外的比较。这就是为什么我从循环中中断计数>=2。我假设每个元素存在一次。我仍然无法找出为什么我得到了错误的结果
    public boolean anyDuplicates(int[] arr) {
        for(int i=0; i<arr.length-1; i++) {
            for(int j=i+1; j<arr.length; j++)
                if (arr[i]==arr[j])
                    return true;
        }
    
        return false;
    }