我正在尝试编写此代码来读取文件并将值作为数组输入。然后使用这些值,在点1-5,2-6,3-7等中添加数字,直到文件结束,执行此操作后,我想将这些新值放入数组中。
然后我试图比较数组以查看第一个数组值是否为> 0.999大于第二个数组的值
我的代码在这里,这只是为了使值正确,而不是转移到代码的第二部分
import java.io.*;
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];
int counter = 0;
int count = 0;
int maxTemp = 0;
int minTemp = 0;
double tempVar = 0;
double tempVal = 0;
while (file.hasNextInt()) array[counter++] = file.nextInt();
{
for (int i = 0 ; i < array.length; i++)
{
for (int j = 0; j < 5 ; j++)
{
newArray[i] += array[i + j] / 5; //Getting Average TEMP over 5 days.
}
System.out.println(array[i]);
}
}
System.out.println("Maximum Temperature within peaks " + maxTemp );
}
}
这会引发以下错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15
at Asgn7.main(Asgn7.java:25)
编辑:我不确定我的代码是否正确,这是我第一次使用数组而且我的xD严重生锈。
由于
答案 0 :(得分:3)
您需要i < array.length - 5
,因为您有一个内部循环,可以向前扫描五个。像,
for (int i = 0 ; i < array.length - 5; i++)
{
for (int j = 0; j < 5 ; j++)
{
或强>
for (int i = 0 ; i + 5 < array.length; i++)
{
for (int j = 0; j < 5 ; j++)
{
此外,您需要将这些值一起添加以获得平均值。
for (int i = 0 ; i + 5 < array.length; i++)
{
int total = 0;
for (int j = 0; j < 5 ; j++)
{
total += array[i + j];
}
System.out.printf("Average is: %.1f%n", total / 5);