因此,我的任务是逐行读取文件,并将整数存储到数组中。然后在1-5、2-6、3-7等点中添加整数,并将它们存储到一个新的数组中。
在数组1中,比数组2多出4个值。我需要比较这些数组,看看array1是否比array2大0.999。
如果它确实更大,我需要打印出数组1中数字的位置。
现在,我的问题是,我的代码输出的每个数字都大于数组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.
发布于 2015-11-22 16:22:03
从图片判断,您没有将值放置在第二个数组中的正确索引中,或者没有匹配正确的值。
如果您希望它在图片中看起来完全一样,则应该声明第二个数组:
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);
}如果您想像最初那样保存两个未使用的空格,而不是精确地响应图片,那么您应该像原来那样计算值。但是,请记住将每个元素与之前的一个两个位置进行比较,并在结束之前停止两个位置。
而不是
for(int i = 2; i < array.length; i++)使用
for(int i = 2; i < array.length - 2; i++)要打印位置,使用count和tempVal构造是不必要的。你只需要打印i+1。还请注意,在;之后有一个if。这意味着它是一个空的if,并且它之后的块总是被执行。永远不要在;、for、while等之后使用if。
发布于 2015-11-22 16:21:51
不清楚您在问题中要求的是什么,但是只要看一下您的代码,就可以不问逻辑了:
for(int i = 2; i < array.length; i++) { if(array[i] > (newArray[i-2] + 0.999)); { count++; tempVal = count; } System.out.println(tempVal); } }
如果您将system.out行重新定位如下,我认为您将得到如下所期望的:
for(int i = 2; i < array.length - 2; i++)
{
if(array[i] > (newArray[i-2] + 0.999));
{
System.out.println(tempVal);
// count++;
// tempVal = count;
}
}
}PS:请注意,我还更改了循环的边界,以停止数组的第13个成员的迭代,而不是15。
发布于 2015-11-22 16:27:19
你确定你解析的数字是正确的吗?请参阅Java: Reading integers from a file into an array,为什么不在解析之后打印出来以进行验证?
顺便说一下,这将使第二个数组的索引溢出(因为它是使用新的doublearray.length -4创建的):
for(int i = 2; i < array.length; i++)那么你的代码运行吗?
https://stackoverflow.com/questions/33856284
复制相似问题