所以我的任务是逐行读取文件并将整数存储到数组中。然后在点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)
}
}
应该比较的值是3-13。
答案 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++)
要打印位置,不需要使用count
和tempVal
的构造。您只需要打印i+1
即可。另请注意,;
之后有if
。这意味着它是一个空的if
,并且它后面的块总是被执行。在;
,if
,for
之后永远不会有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++)
你的代码也运行了吗?