Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从常规数组更改为arrayList_Java - Fatal编程技术网

Java 从常规数组更改为arrayList

Java 从常规数组更改为arrayList,java,Java,我已经编写了从.dat文件中打印出整数的代码,并将它们移动到一个规则数组中,然后打印出平均值和标准偏差。现在我想从常规数组切换到ArrayList。我已经写了下面的代码,但似乎没有正确运行 .dat文件包括以下数字:51 52 55 57 58 61 62 63 66 66 70 72 74 75 77 77 78 79 81 82 84 86 87 88 91 94 97 谢谢你的帮助 import java.io.*; import java.lang.Math; import java.u

我已经编写了从.dat文件中打印出整数的代码,并将它们移动到一个规则数组中,然后打印出平均值和标准偏差。现在我想从常规数组切换到ArrayList。我已经写了下面的代码,但似乎没有正确运行

.dat文件包括以下数字:51 52 55 57 58 61 62 63 66 66 70 72 74 75 77 77 78 79 81 82 84 86 87 88 91 94 97

谢谢你的帮助

import java.io.*;
import java.lang.Math;
import java.util.*;
import java.text.DecimalFormat;


public class gradeSorter{

public static void main(String[] args) throws IOException {
{
DecimalFormat fmt = new DecimalFormat("0.000");
Scanner scanner = new Scanner(new File("grades.dat"));
double average;
double deviation;
double sum = 0;
int number = 0;
ArrayList<Integer> element = new ArrayList<Integer>();


for (int count = 0; count < element.size(); count++)
{
while (scanner.hasNext())
{
element.add(scanner.nextInt());
number = element.get(count);
    for (int item : element){
        sum += number;
        System.out.println(number);
}

}

average = sum / element.size();

for (int i = 0; i < element.size(); i++)
{ 
sum += Math.pow((element.get(i) - average),2);

}


deviation = Math.sqrt((sum / (30-1)));




System.out.println("The average of these grades is : " + fmt.format(average));

System.out.println("The standard deviation of these grades is: " + fmt.format(deviation));  


}
}
}
}
更新***

import java.io.*;
import java.lang.Math;
import java.util.*;
import java.text.DecimalFormat;


public class gradeSorter{

public static void main(String[] args) throws IOException {
{
DecimalFormat fmt = new DecimalFormat("0.000");
Scanner scanner = new Scanner(new File("grades.dat"));
double average;
double deviation;
double sum = 0;
int number = 0;
int newnumber = 0;
ArrayList<Integer> element = new ArrayList<Integer>();



while (scanner.hasNextInt())
{
element.add(scanner.nextInt());


}
for (int item : element){
        sum += item;
        System.out.println(item);
}

average = sum / element.size();

for (int i = 0; i < element.size(); i++)
{ 
newnumber += Math.pow((element.get(i) - average),2);

}


deviation = Math.sqrt(newnumber / (element.size()));




System.out.println("The average of these grades is : " + fmt.format(average));

System.out.println("The standard deviation of these grades is: " + fmt.format(deviation));  


}
}
}
--jGRASP exec:java分级分拣机

五十一 52 55 57 58 61 62 63 66 66 66 70 72 73 74 75 75 77 77 78 79 81 82 84 86 87 88 91 94 97 这些等级的平均数为:73.233 这些等级的标准偏差为:12.288

--jGRASP:操作完成。

第一期:

for循环甚至不会运行一次,因为element.size最初为0,所以循环的条件仅在第一次迭代时为false:

for (int count = 0; count < element.size(); count++)

删除for循环,一切都会正常运行。就吃这个吧:

public static void main(String[] args) throws IOException {
{
....
....
while (scanner.hasNext())
{
    number = scanner.nextInt();
    element.add(number);
    for (int item : element)
    {
        sum += number;
        System.out.println(number);
    }
}
average = sum / element.size();
....
....
....

您得到的错误详细信息也会很有用。

似乎运行不正确,您是什么意思?什么不起作用?错误?一些建议:对x x:Xs使用新的迭代样式,它更容易阅读,也不容易出错,并且您有一个硬编码的30,最后您有一个可能被0除的错误空数据,但您应该知道。标题正确吗?我认为你没有数组中的数据。你的代码似乎与你的要求不匹配。如果要从数组基元转到列表:ArraysasList@RohitJain,我已经用你上面的建议更新了我的代码。@James。sum+=数字应为sum+=item@James. 计算平均值后,需要将总和重新初始化为0。@Rohit Jain,再次更新,我用数字代替总和来表示偏差,但正确答案应该是:12.525。“由于某种原因,这些数字似乎没有打印出来。”@James。偏差=数学sqrtsum/30-1;应为偏差=Math.sqrtnumber/30-1;30-1是什么?我已经更新了上面的新代码,目前没有错误。
public static void main(String[] args) throws IOException {
{
....
....
while (scanner.hasNext())
{
    number = scanner.nextInt();
    element.add(number);
    for (int item : element)
    {
        sum += number;
        System.out.println(number);
    }
}
average = sum / element.size();
....
....
....