-1

こんにちは、誰でも以下のコードで私を助けることができます。これがヌルポインタ例外をスローしている理由と、それを回避する方法. 私はtsvファイルとcsvファイルを読み込んで、これを処理しようとしています。getDictionaryValues 関数を呼び出すと、null ポインター例外がスローされます。

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

}

}

4

1 に答える 1

2

null値を割り当てないため、明らかにこの変数は に評価されます。

private static TittleMatchUtil tMU;

TittleMatchUtil1 つの解決策は、新しいオブジェクトを変数に割り当てることです。

private static TittleMatchUtil tMU = new TittleMatchUtil();

もう 1 つはgetDictionaryValues()methodを作成staticすることですが、コードのリファクタリングがさらに必要になる可能性があるため、私はしません。

于 2013-09-09T15:13:51.280 に答える