【发布时间】:2016-02-24 16:30:56
【问题描述】:
所以我的任务是逐行读取文件并将整数存储到数组中。然后在点 1-5、2-6、3-7 等中添加整数并将它们存储到一个新数组中。
在数组 1 中,比数组 2 多 4 个值。我需要比较这些数组,看看数组 1 是否比数组 2 大 0.999。
如果确实更大,我需要打印出数组1中数字的LOCATION。
现在我的问题是我的代码输出的每个数字都大于数组 2 中的相应数字。
代码:
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
public class Asgn7
{
public static void main(String[] args) throws FileNotFoundException
{
Scanner file = new Scanner(new File("asgn7data.txt"));
double[] array = new double[file.nextInt()];
double[] newArray = new double[array.length - 4];
double tempVal = 0;
int j = 0;
int count = 0;
while(file.hasNext())
{
for(int i = 0; i < array.length ; i++)
{
array[i] = file.nextInt();
}
for(j = 0; j < array.length - 4; j++)
{
for(int k = 0; k < 5; k++)
{
newArray[j] += array[j+k] / 5;
}
}
for(int i = 2; i < array.length; i++)
{
if(array[i] > (newArray[i-2] + 0.999));
{
count++;
tempVal = count;
}
System.out.println(tempVal);
}
}
}
}
应该比较的值是3-13。
【问题讨论】:
-
不确定你的逻辑。
newArray中的数字不是您指定的,而是运动 1-5 中五个数字的平均值,2-6 的平均值等。此外,您正在将array中的所有数字与一个进行比较,具体newArray中的元素(元素j-2和j没有改变。你到底想通过这个实现什么? -
一般的事情,是对的,那是我的错。应该是 i-2 吗?
-
@RealSkeptic -> i=2 在那里,所以 array[i] 从第三个索引开始,并且 j-2 在那里,因为当我把 i-2 和 newArray[i- 2] 我得到一个越界错误
-
所以现在的问题是,您到底想比较什么?为什么是第三个索引?由于数组的长度不同,当然你会得到一个越界错误。因此,请编辑您的问题并更好地解释哪些数字应检查在彼此之间的 0.999 范围内。
-
@RealSkeptic 我刚刚在原始帖子中添加了一张图片。具有两个数字的值应相互比较。灰色阴影的应该是返回真实的那些。