Java 如何将文件中的数据保存到数组中?
下面是新代码: 代码可以打印奇怪的文本而不是数字,但可以正确计算中值和平均值Java 如何将文件中的数据保存到数组中?,java,arrays,file-io,Java,Arrays,File Io,下面是新代码: 代码可以打印奇怪的文本而不是数字,但可以正确计算中值和平均值 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) th
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 [I@55f96302, [I@55f96302, [I@55f96302, [I@55f96302 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)。我还想找到数组中数字的平均值
我的问题是,我不知道如何将文件中的所有值读入数组。我的代码可以将文件中的数字打印到控制台,但是如何将其读入数组,然后进行计算呢
这是一个测试程序,所以我的文件有4个单位数,比如5,7,9,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());
}
如果您真的想使用数组,可以使用变量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
}
}
如前所述,如果没有足够的空间容纳所有整数,这将抛出一个
编辑:
正如Bruno Toffalo所评论的,我们可以访问数组上的i位置,并在块上处理该异常(如果发生)。这将避免异常通过方法传播,从而终止程序
编辑2:
问题是
System.out.println(numFile)代码>将打印有关ArrayList(numFile)的信息。如果要打印ArrayList的元素,应使用get(i)
。此方法将检索ArrayList位置i上的整数。i、 e.System.out.println(numFile.get(2))代码>以及投票被否决的原因是什么???在最后一种方法中,最好将其包含在try/catch语句中,以避免传播可能的异常。这一点很好。我编辑了代码并添加了try/catch语句。我对Java相当陌生,自学,这是我的第二个月,所以我对try/catch不太了解。它的目的是什么?
int i = 0;
while (inputFile.hasNext()) {
try{
mynumFile[i++] = inputFile.
}catch(ArrayIndexOutOfBoundsException e){
// more integers than you array can hold
// handle this situation here
}
}