2013-09-09 2 views
-1

привет может кто-нибудь помочь мне с ниже кода. почему это бросает исключение нулевого указателя и как я могу его избежать. Я пытаюсь прочитать файл tsv и файл csv и выполнить некоторую обработку с этим. , когда я вызываю функцию getDictionaryValues, она бросает исключение нулевого указателя.null указатель исключение в чтении tsv файл

package com.ugam.qa.tittle; 
import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.HashSet; 
import java.util.List; 
import java.util.Set; 

public class TittleMatch { 
private static TittleMatchUtil tMU; 
public static void main(String[] args) { 
    String fullname="d:/files/listing/Headphones.tsv"; 
    Set<String> attributeSet=new HashSet<String>(); 
    attributeSet.add("Storage Type"); 
    attributeSet.add("Recording Definition"); 
    attributeSet.add("Type"); 
    attributeSet.add("Brand"); 
    BufferedReader in = null; 
    try 
    { 
     System.out.println("file found"); 
     in= new BufferedReader(new FileReader(fullname)); 
    } catch (FileNotFoundException e1) { 
     e1.printStackTrace(); 


    } 
    String str; 
    String prv_Pid="-1"; 
    try { 
     str = in.readLine(); 
     while ((str = in.readLine()) != null) { 

      if (str.trim().length() == 0) { 
       System.out.println("while loop"); 
       continue;} 

      String[] values = str.split("\\t"); 
      //System.out.println(values.length); 
      if(prv_Pid=="-1" || values[9]==prv_Pid) 
      { 
       if(attributeSet.contains(values[12])) 
       { 
        ArrayList<Set<String>> dicValues=new ArrayList<Set<String>>(); 
        if(values[12]!=null && values[13]!=null) 
        { 
         dicValues=tMU.getDictionaryValues(values[12],values[13]); 
        } 
        //Set<String> tittle=new HashSet<String>(); 
        //tittle.add(values[8]); 
        //System.out.println(tittle); 

       } 
      } 

     } 


    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

}

+1

Вставьте стопку, пожалуйста. –

+0

java.lang.NullPointerException \t at com.ugam.qa.tittle.TittleMatch.main (TittleMatch.java:50) – user2696466

+0

OT: Используйте 'String.equals' для сравнения строк' if (prv_Pid.equals ("- 1") ' – Reimeus

ответ

2

Очевидно, что эта переменная оценивается в null, так как вы никогда не присвоить ему значение.

private static TittleMatchUtil tMU; 

Одним из решений было бы назначить новый TittleMatchUtil объект переменной:

private static TittleMatchUtil tMU = new TittleMatchUtil(); 

и еще один, чтобы сделать getDictionaryValues() метод static, который я бы не делать, потому что это может потребоваться больше перефакторинг кода.

+0

Если я не стану статическим, он показывает ошибку« Невозможно сделать статическую ссылку на нестатические поля tMU ». PLZ предложит, как исправить это. – user2696466

+0

' частный статический TittleMatchUtil tMU = новый TittleMatchUtil(); ' –