gpt4 book ai didi

java - 将值添加到从文件 java 读取的数组

转载 作者:行者123 更新时间:2023-12-01 12:49:32 24 4
gpt4 key购买 nike

我有一个程序类,它读取输入文件并显示它。但我试图将它包含的 double 放入两个数组中,然后尝试找到这些数组的最大值和最小值。

但是我面临的问题是它只保存文件中包含的最后一个 double 值,而数组的其他输入是0.0。(不应该是这种情况)。

这是我的代码;

import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;

public class DataRow2 {
static double[] fatContentA;
static double[] protienContentA;



public static void starter() {
Scanner in=new Scanner(System.in);
int numOfClusters=in.nextInt();

int numOfElementsOfDataSet=in.nextInt();
int numOfVariables=in.nextInt();

System.out.printf("%d\t %d\t %d\t",numOfClusters,numOfElementsOfDataSet,numOfVariables);


String line=in.nextLine();
String ignore=in.nextLine();
StringTokenizer ignoreLine = new StringTokenizer(ignore);
while (ignoreLine.hasMoreTokens()) {
System.out.println(ignoreLine.nextToken());
}
System.out.println(ignoreLine);
int counter=1;
while(in.hasNext()){

String readLine=in.nextLine();
Scanner parseInformation=new Scanner(readLine);
String nameOfMammal=in.next();
double fatContent=in.nextDouble();
double protienContent=in.nextDouble();

fatContentA=new double[numOfElementsOfDataSet];
protienContentA=new double[numOfElementsOfDataSet];
fatContentA[counter]=fatContent;
protienContentA[counter]=protienContent;

System.out.printf("%s\t%f\t%f\t\n",nameOfMammal,fatContent,protienContent);
counter+=1;
}

Arrays.sort(fatContentA);
int length=fatContentA.length;
//System.out.println(fatContentA[length/2]);
double max_fat = fatContentA[length-1];
double min_fat = fatContentA[0];

Arrays.sort(protienContentA);
double max_Protien = protienContentA[protienContentA.length - 1];
double min_Protien = protienContentA[0];

System.out.println("The maximum fat in this file was"+max_fat);
System.out.println("The minimum fat in this file was"+min_fat);
System.out.println("The maximum Protien in this file was"+max_Protien);
System.out.println("The maximum Protien in this file was"+min_Protien);

}



}

这是我要读取的文件;

7
25
2
Mammal fat_content(%) protein_content(%)
Bison 7.9 5.9
Guinea_pig 3.9 8.1
Dolphin 14.0 10.4
Donkey 1.4 1.7
Goat 4.1 3.4
Deer 19.7 9.2
Dog 8.3 9.5
Yak 6.7 5.3
Camel 3.4 3.5
Cat 10.9 11.1
Rabbit 13.1 7.1
Llama 3.2 3.9
Human 43.9 7.4
Mule 1.8 2.0
Elephant 5.0 4.0
Horse 1.3 2.1
Rat 12.6 12.3
Reindeer 20.3 10.4
Sheep 6.4 5.6
Pig 5.1 6.6
Fox 5.9 7.4
Whale 42.3 10.9
Polar_bear 31.0 10.2
Zebra 4.8 3.0
Seal 53.2 11.2

我得到的输出是它正在读取的所有文件数据:

The maximum fat in this file was53.2
The minimum fat in this file was0.0
The maximum Protien in this file was11.2
The maximum Protien in this file was0.0

这不是真的,因为我正在打印文件的最后两个 double 。数组仅将最后两个 double 值存储在数组的最后一个位置。我不明白我哪里出了问题。

我不知道我还应该做什么来将 double 存储在数组中并找到最大值和最小值...预先感谢您的帮助,我们将不胜感激。

最佳答案

移动这些行:

    fatContentA=new double[numOfElementsOfDataSet];
protienContentA=new double[numOfElementsOfDataSet];

在 while 循环之前:

    fatContentA=new double[numOfElementsOfDataSet];
protienContentA=new double[numOfElementsOfDataSet];
while (in.hasNext()) {

您的代码不起作用,因为 while 循环中的每次迭代都会将数组 fatContentAprotienContentA 重新初始化为空数组。

关于java - 将值添加到从文件 java 读取的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24341976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com