如何将文件中的数据保存到数组中?
所以这里是新的代码: 代码是打印奇怪的文本,而不是数字,但正确地计算中位数和平均值。如何将文件中的数据保存到数组中?
import java.util.Scanner;
import java.io.IOException;
import java.io.File;
import java.io.PrintWriter;
public class Array {
Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) throws IOException{
File myFile = new File("numbers.txt");
Scanner inputFile = new Scanner(myFile);
int[] mynumFile = new int[4];
int i = 0;
double median;
double sum = 0;
int middle;
while (inputFile.hasNextInt())
{
mynumFile[i] = inputFile.nextInt();
sum += mynumFile[i];
i++;
System.out.println(numFile);
/*and if i do --> System.out.println(mynumFile);
it prints [[email protected], [[email protected], [[email protected], [[email protected] and i dont know
what this is, since the program does not throw any errors or exceptions */
}
middle = (mynumFile.length)/2;
median = (mynumFile[middle-1] + mynumFile[middle])/2.0;
System.out.println("Median number is: " + median);
System.out.println("Average of the numbers is: " + sum/mynumFile.length);
inputFile.close();
}
}
所以我想写一个Java程序来读取所有文件中的数字到一个数组。然后找到数字的中位数并将其打印输出到控制台。中位数应该是双重的。偶数列表的中位数是中间两位数的平均值,例如,假设中位数为((NUMBER_2 + NUMBER_3)/ 2)。我也想找到数组中数字的平均值。
我的问题是我没有得到如何读取文件中的所有值到数组中。我的代码从我的文件输出到控制台的数字很好,但如何将它读入数组,然后进行计算?
这是一个测试程序,所以我的文件具有诸如5,7,9,4
任何帮助将不胜感激4个位数。
import java.util.Scanner;
import java.io.IOException;
import java.io.File;
import java.io.PrintWriter;
public class Array {
Scanner scnr = new Scanner(System.in);
public static void main(String[] args) throws IOException{
File myFile = new File("numbers.txt");
Scanner inputFile = new Scanner(myFile);
int[] mynumFile = new int[4];
int i = 0;
while (inputFile.hasNext())
{
int numFile = inputFile.nextInt();
System.out.println(numFile);
}
inputFile.close();
}
}
你可以使用ArrayList来创建一个数组而不知道你将从文件中读取的元素的数量(我怀疑是这种情况)。
这将读取从文件到ArrayList的所有整数。
ArrayList<Integer> numFile = new ArrayList<Integer>();
while (inputFile.hasNext())
{
numFile.add(inputFile.nextInt());
}
要获得所有的整数,你可以做同样的事情,但使用foreach循环。
for(int i : numFile)
{
// use your number (i) here
}
如果你真的想使用一个数组,你可以使用你的变量i作为索引。但是,如果文件上的整数多于数组可以容纳的数量,则会发生异常。
int i = 0;
while (inputFile.hasNext()) {
try{
mynumFile[i++] = inputFile.
}catch(ArrayIndexOutOfBoundsException e){
// more integers than you array can hold
// handle this situation here
}
}
如上所述,如果您没有足够的空间存放整数,则会抛出ArrayIndexOutOfBoundsException。
编辑: 作为布鲁诺Toffolo评论的,我们可以try访问阵列上的i位置和处理该异常(如果发生)一个catch块上。这将避免异常通过您的方法传播,最终可能会终止您的程序。
编辑2: 的问题是,System.out.println(numFile);
,将打印出您的ArrayList(numFile)的信息。如果要打印ArrayList的元素,则应使用get(i)
method。此方法将检索ArrayList的位置i上的整数。即System.out.println(numFile.get(2));
什么与投票下降? – JavaCoder