我分别在Main和getRank()的第23行和第78行收到Null Pointer Exception Error。这是在我重新组织代码并使方法为getRank()时发生的。在将代码移至getRank()方法之前,已编译并运行了此代码,我相信此错误是由于变量未正确初始化引起的。

import java.io.*;
import java.util.*;

public class NameRecord
{
    private static String num, name = "dav";
    private static String [] fields;
    private static int [] yearRank;
    private static boolean match;
    private static int getInts, marker, year, max;

        public static void main( String[] args)
        {
            java.io.File file = new java.io.File("namesdata.txt");
            try
            {
                Scanner input = new Scanner(file);
                while (input.hasNext())
                {
                    String num = input.nextLine();
                    if(match = num.toLowerCase().contains(name.toLowerCase()))
                    {
                        getRank();//My Problem I believe
                        getBestYear(marker);
                        System.out.printf("%s     %d     %d\n",fields[0],year,max);
                    }
                }
            }
            catch(FileNotFoundException e)
            {
                System.err.format("File does not exist\n");
            }
        }



    public static int getRank()
    {
        fields = num.split(" ");
        max = 0;
        for (int i = 1; i<12; i++)
        {
            getInts = Integer.parseInt(fields[i]);
            if(getInts>max)
            {
                max = getInts;
                marker = i;
            }
        }
        return max;
    }
}

最佳答案

您的问题出在num上,您在main中声明了一个局部变量,该变量隐藏了您的实例成员:

String num = input.nextLine();


您可能的意思是:

num = input.nextLine();

09-11 20:58