2012-04-15 2 views
0

Я получаю ошибку исключения нулевого указателя в строке 23 и строке 78 в Main и getRank() соответственно. Это произошло, когда я реорганизовал код и сделал метод getRank(). Этот код скомпилирован и прошел до моего перемещения кода в метод getRank(), и я считаю, что эта ошибка связана с неправильной инициализацией переменной.Ошибка исключения языка Java Null

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

Глобальное число не инициализируется и, следовательно, равно нулю. В mailn() вы создаете новую локальную переменную, которая не подвергается getRank(). Если вы хотите использовать его, передать его в качестве параметра getRank (Num)

+0

Он только скрывает члена класса. И это член класса, который не инициализирован, но локальная переменная. –

+0

Это тоже сработало. Спасибо –

+0

Ты первым отвечал +1. – Lion

Смежные вопросы