0

MainとgetRank()の23行目と78行目でそれぞれNull PointerExceptionErrorが発生しています。これは、コードを再編成してメソッド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;
    }
}
4

2 に答える 2

3

グローバルnumは初期化されていないため、nullになります。mailn()で、getRank()に公開されていない新しいローカル変数を作成します。使用する場合は、パラメーターgetRank(num)として渡します。

于 2012-04-15T13:49:37.423 に答える
1

問題はnum、インスタンスメンバーを非表示にするローカル変数をmainで宣言することです。

String num = input.nextLine();

あなたはおそらく意味しました:

num = input.nextLine();
于 2012-04-15T13:51:36.363 に答える