2012-04-15 4 views
0

Ich bekomme einen Nullzeiger Ausnahmefehler bei Zeile 23 und Zeile 78 in Main bzw. getRank(). Dies geschah, als ich den Code reorganisierte und die Methode getRank() machte. Dieser Code wurde vor dem Verschieben des Codes in die Methode getRank() kompiliert und ausgeführt, und ich glaube, dass dieser Fehler darauf zurückzuführen ist, dass eine Variable nicht richtig initialisiert wurde.Java-Sprache Null Zeiger Ausnahme Fehler

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

Antwort

1

Ihr Problem ist mit num Sie eine lokale Variable in Haupt erklären, welche Instanz Mitglied versteckt:

String num = input.nextLine(); 

Sie wahrscheinlich gemeint:

num = input.nextLine(); 
+0

Das war das Problem, sobald ich String aus dieser Codezeile löschte, funktionierte der Code. Vielen Dank. –

3

Die globale Nummer ist nicht initialisiert und daher gleich Null. In mailn() erstellen Sie eine neue lokale Variable, die nicht mit getRank() in Verbindung gebracht wird. Wenn Sie es verwenden wollen, geben sie als Parameter Getränk (num)

+0

Er versteckt nur das Klassenmitglied. Und es ist das Klassenmitglied, das nicht initialisiert wird, sondern die lokale Variable. –

+0

Das hat auch funktioniert. Danke –

+0

Sie waren die Ersten, die +1 antworteten. – Lion