如何比较两个不同大小的数组?

时间:2015-11-22 15:08:55

标签: java arrays

所以我的任务是逐行读取文件并将整数存储到数组中。然后在点1-5,2-6,3-7等中添加整数并将它们存储到新数组中。

在数组1中,还有比数组2多4个值。我需要比较这些数组,看看array1是否比array2大0.999。

如果它确实更大,我需要打印数组1中数字的LOCATION。

现在我的问题是我的代码输出的每个数字都大于数组2中的相应数字。

代码:

private class func getLocItemsAtPath(path: String!, completionHandler: (LocItemsWrapper?, NSError?) -> Void) {
    Alamofire.request(.GET, path!)
        .responseLocItemsArray { response in
            if let error = response.result.error
            {
                completionHandler(nil, error)
                return
            }
            completionHandler(response.result.value, nil)
    }
}

enter image description here

应该比较的值是3-13。

3 个答案:

答案 0 :(得分:1)

根据图片判断,您没有将值放在第二个数组中的正确索引中,或者您没有匹配正确的索引。

如果您希望它看起来与图片完全相同,则应声明第二个数组:

double[] newArray = new double[array.length - 2];

填充它的循环应改为:

    for(j = 2; j < array.length - 2; j++)
    {
        for(int k = -2; k <= 2; k++)
        {
            newArray[j] += array[j+k] / 5;  
        }

    }

这会将平均值放在newArray中的第三,第四,第五......元素中。现在你可以直接比较它们:

    for(int i = 2; i < array.length - 2; i++)
    {
        if(array[i] > (newArray[i] + 0.999))
        {
            count++;
            tempVal = count;
        }

        System.out.println(tempVal);
    }

如果你想保存两个未使用的空格,就像你原来那样,而不是完全回应图片,那么你应该像原来那样计算这些值。但请记住将每个元素与之前的两个位置进行比较,并在结束之前停止2个位置

而不是

for(int i = 2; i < array.length; i++)

使用

for(int i = 2; i < array.length - 2; i++)

要打印位置,不需要使用counttempVal的构造。您只需要打印i+1即可。另请注意,;之后有if。这意味着它是一个空的if,并且它后面的块总是被执行。在;iffor之后永远不会有while

答案 1 :(得分:0)

不清楚你在问题中要求的是什么,而只是通过查看你的代码而不用质疑什么是逻辑:

scheduledForSynchronization

如果您按如下方式重新定位system.out行,我认为您将获得如下所示:

    for(int i = 2; i < array.length; i++)
    {
        if(array[i] > (newArray[i-2] + 0.999));
        {
            count++;
            tempVal = count;
        }

         System.out.println(tempVal);
    }   
    }

PS:请注意我也改变了循环的边界,以便在数组的第13个成员上停止迭代,而不是15。

答案 2 :(得分:0)

您确定要正确解析数字吗? 见Java: Reading integers from a file into an array 解析验证后,为什么不将它们打印出来?

顺便说一句,这会溢出第二个数组的索引(因为它是使用new double [array.length - 4]创建的):

for(int i = 2; i < array.length; i++)

你的代码也运行了吗?