Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 如何将文件中的数据保存到数组中?_Java_Arrays_File Io - Fatal编程技术网

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
    }
}