任务是创建一个程序,该程序将从标准输入(包含整数列表的文件)读取到数组中,然后找到这些整数的平均值、最大值、最小值、中值和标准差。首先,这是代码:
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)”方法中调用它们。我很确定我可以做到这一点,但它不会编译,我不确定我错过了什么。
最后,我想确保我的标准差方法是正确的。我不指望任何人能解决所有这些问题,但这些都是我卡住的地方,任何帮助都将不胜感激。谢谢!