gpt4 book ai didi

Java:从文件扫描到数组列表,然后最小/最大/平均值/标准偏差

转载 作者:行者123 更新时间:2023-12-02 00:37:36 27 4
gpt4 key购买 nike

作业是创建一个程序,将从标准输入(包含整数列表的文件)读取到数组中,然后查找这些整数的平均值、最大值、最小值、中位数和标准差。首先,这是代码:

import java.io.*;
import java.util.*;


public class DescriptiveStats
{

protected List<Integer> scores = new ArrayList<Integer>();

public DescriptiveStats()
{
// default constructor
}


public void main(String[] args) throws IOException
{

try{
Scanner sc = new Scanner(new FileReader("students.txt"));
while(sc.hasNextInt())
{
scores.add(sc.nextInt());
}
sc.close();
}
catch(Exception e)
{
e.printStackTrace();
}

DescriptiveStats stat = new DescriptiveStats();
System.out.println("Min = " + stat.getMin(scores[]));
System.out.println("Max = " + stat.getMax(scores[]));
System.out.println("Median = " + stat.getMedian(scores[]));
System.out.println("Mean = " + stat.getMean(scores[]));
int Mean = stat.getMean(scores[]);
System.out.println("Standard Deviation = " + stat.getStandardDev(scores[], Mean));
}


public int getMin(int []lst)
{
int min = lst[0];
for(int i=0;i<lst.length;i++)
{
if(min>lst[i])
min=lst[i];
}
return min;
}

public int getMax(int []lst)
{
int max = lst[0];
for(int i=0;i<lst.length;i++)
{
if(max<lst[i])
max=lst[i];
}
return max;
}

public int getMedian(int [] lst)
{
Arrays.sort(lst);
int middle = lst.length/2;
if(lst.length%2==1)
{
return lst[middle];
}
return (lst[middle-1] + lst[middle]);
}

public int getMean(int [] lst)
{
Arrays.sort(lst);
int mean = 0;
int sum = 0;
int count = 0;
for(int i=0;i>lst.length;i++)
{
sum = sum + lst[i];
count++;
}
mean = sum/count;
return mean;
}

public int getStandardDev(int [] lst, int m)
{
int mean = m;
int [] array = lst;
int total = 0;
for(int i =0; i < array.length; i++)
{
int result = array[i]-mean;
int [] all = Math.pow(result, 2);

}
total = result/array.length;
int standev = Math.sqrt(total);
return standev;
}

}

我的具体问题归结为:我不知道我是否正确读取了文件。我遵循了从书籍到网站的许多说明,这似乎是扫描仪的正确公式,但找不到该文件。我尝试了三种不同的 IDE(BlueJ、Eclipse、Netbeans),但没有成功。

其次,我创建了将数组列表作为输入的方法,并在“public void main(string[] args)”方法中调用它们。我很确定我可以做到这一点,但它无法编译,而且我不确定我错过了什么。

最后,我想确保我的标准差方法是正确的。我不期望任何人能够解决所有这些问题,但这些是我陷入困境的点,任何帮助将不胜感激。谢谢!

最佳答案

要做的第一件事是让你的程序编译并运行(无论正确与否)。然后您可以简单地打印它读取的值并测试它们是否与数据文件中的值相同。

要让程序运行,您首先需要将 main() 方法声明为静态。另外,由于您正在捕获 IOException(顺便说一下,这是个好主意!),因此您不需要声明 main 来引发异常。最后,由于您尝试读取 main 内的数据,因此无法访问 scores 字段,因为它是一个实例变量,并且您没有 的实例DescriptiveStats 还没有。此外,由于您将数组作为参数传递给分析函数,因此它不需要是实例变量。试试这个:

public static void main(String[] args) {
List<Integer> scores = new ArrayList<Integer>();
try{
Scanner sc = new Scanner(new FileReader("students.txt"));
while(sc.hasNextInt())
{
scores.add(sc.nextInt());
}
sc.close();
}
catch(Exception e)
{
e.printStackTrace();
}
// etc.
}

关于Java:从文件扫描到数组列表,然后最小/最大/平均值/标准偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338688/

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