0

我的代码中出现 java.lang.nullpointerexception 错误。虽然我不确定为什么它不正确。我应该是一个快速修复,但我似乎无法弄清楚。似乎第 45 行中的数组给了我错误。任何帮助将不胜感激。先感谢您。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

class readFile
{
    private String fileName;
    private double lowestNum;
    private double highestNum;
    private double totalNum;
    private double averageNum;
    private int[] array;

    public readFile(String input)
    {
        fileName = input;
        lowestNum = 0;
        highestNum = 0;
        totalNum = 0;
        averageNum = 0;
    }

    public void readArray() throws FileNotFoundException
    {
        Scanner s = new Scanner(new File(fileName));
        array = new int[s.nextInt()];
        for(int i = 0; i < array.length; i++)
        {
            array[i] = s.nextInt();
        }
        s.close();
    }
    \\ERROR IS HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    public void findLowest()
    {
        lowestNum = array[0];
        for(int i = 1; i < array.length; i++)
        {
            if(array[i] < lowestNum);
            lowestNum = array[i];
        }
        System.out.println("Lowest number: " + lowestNum);
    }

    public void findHighest()
    {
        highestNum = array[0];
        for(int i = 1; i < array.length; i++)
        {
            if(array[i] > highestNum);
            highestNum = array[i];
        }
        System.out.println("Highest number: " + highestNum);
    }

    public void findTotalNum()
    {
        for(int i = 0; i < array.length; i++)
        {
            totalNum = totalNum + array[i];
        }
        System.out.println("Total of all numbers: " + totalNum);
    }

    public void findAverage()
    {
        averageNum = (totalNum / array.length);
        System.out.println("Average of all numbers: " + averageNum);
    }
}

public class NumberAnalysis 
{
    public static void main(String[] args) throws FileNotFoundException 
    {
        String fileName = "Numbers.txt";

        readFile myClass = new readFile(fileName);
        myClass.findLowest();
        myClass.findHighest();
        myClass.findTotalNum();
        myClass.findAverage();
    }
}
4

4 回答 4

3

如果readArray()是设置数组的方法,则必须在尝试使用数组之前调用该方法。

于 2014-10-17T07:21:06.873 回答
1

你永远不会打电话readArray,所以你array永远不会被初始化。

于 2014-10-17T07:20:46.930 回答
0

问题是您实例化了您的对象,但您忘记了实例化数组。你应该做:

public static void main(String[] args) throws FileNotFoundException 
{
    String fileName = "Numbers.txt";

    readFile myClass = new readFile(fileName);
    myClass.readArray();
    myClass.findLowest();
    myClass.findHighest();
    myClass.findTotalNum();
    myClass.findAverage();
}

顺便说一句,你应该总是有以大写字母开头的类,它使你的代码更具可读性。

于 2014-10-17T07:24:28.540 回答
0

您必须调用readArray方法,还应该为它提供一个参数filename,以便Scanner可以获取参数filename。否则会生成一个FileNotFoundException

于 2014-10-17T07:25:12.080 回答