2012-04-15 7 views
0

MainとgetRank()のそれぞれ23行目と78行目でヌルポインター例外エラーが発生します。これは、コードを再編成してメソッドgetRank()を作成したときに発生しました。このコードは、コードをgetRank()メソッドに移動する前にコンパイルして実行しましたが、このエラーは変数が正しく初期化されていないためと思われます。Java言語のヌルポインター例外エラー

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

答えて

1

あなたの問題はnumである、あなたは、インスタンスメンバーを隠すメイン内のローカル変数を宣言:

String num = input.nextLine(); 

おそらく意味:

num = input.nextLine(); 
+0

これは問題でした。コードの行からStringを削除するとコードが機能しました。ありがとうございました。 –

3

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

+0

彼はクラスメンバーだけを隠しています。そして、それは初期化されていないクラスメンバーですが、ローカル変数はです。 –

+0

これも機能しました。ありがとう –

+0

あなたは最初に+1に答えました。 – Lion

関連する問題