Main中的NullPointerException错误

时间:2014-03-26 21:48:55

标签: java nullpointerexception

当用户将文件名输入控制台时,尝试读取文件。该程序编译并运行没有错误。输入文件名并按Enter键后,会出现此错误。无法弄清楚原因。任何帮助将不胜感激。

Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.<init>(Writer.java:88)
at java.io.PrintWriter.<init>(PrintWriter.java:113)
at java.io.PrintWriter.<init>(PrintWriter.java:100)
at propertylistings.propertylistings.main(propertylistings.java:34)

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.TreeSet;

public class propertylistings {

    public static void main(String[] args)

    throws FileNotFoundException

    {

        // Prompt for the input file name

        Scanner console = new Scanner(System.in);
        System.out.print("Input file: ");
        String inputFileName = console.next();
        BufferedWriter pwfo = null;

        try {
            pwfo = new BufferedWriter(new FileWriter("C:\\agentReport.txt",
                    true));
        } catch (IOException e) {
        }
//next line is LINE 34 
        PrintWriter pwo = new PrintWriter(pwfo);

        // Construct property type treeSet

        Set<String> propertyTypes = pTypes(inputFileName);

        // Print property types from treeSet

        for (String type : propertyTypes) {
            System.out.println(type);
            pwo.println(type);
        }

        // Construct agent ids and values treeSet

        Set<String> agentRpt = agentValue(inputFileName);

        // Print agent Ids and values from key set

        for (String tail : agentRpt) {
            {
                System.out.println(tail);
                pwo.println(tail);
            }
        }
        pwo.flush();
        pwo.close();
    }

    // Reads the input file.
    // @return the alphabetized property types in uppercase.

    public static Set<String> pTypes(String inputFileName)
            throws FileNotFoundException

    // Construct a tree set to return property types
    {
        Set<String> type = new TreeSet<String>();
        Scanner in = new Scanner(new File(inputFileName));

        // Use delimiters to select specific chars for set

        in.useDelimiter("[1234567890. ]");
        while (in.hasNext()) {
            type.add(in.next().toUpperCase());
        }
        in.close();
        return type;
    }

    // Reads the input file.
    // @returns the Agent id's and corresponding property values.

    public static Set<String> agentValue(String inputFileName)
            throws FileNotFoundException {
        TreeSet<String> tail = new TreeSet<String>();
        SortedMap<String, Number> agentValues = new TreeMap<String, Number>();
        Scanner in = new Scanner(new File(inputFileName));
        String line = inputFileName;

        while (in.hasNextLine()) {
            try {
                line = in.nextLine();
                String[] fields = line.split("[\\s}]");
                String agentId = (fields[3]);
                Double pValue = Double.parseDouble(fields[2]);

                if (agentValues.containsKey(agentId)) {
                    pValue += agentValues.get(agentId).doubleValue();
                }
                agentValues.put(agentId, pValue);

            } catch (Exception e) {
            }

            // Create keyMap with all keys and values

            Set<String> keySet = agentValues.keySet();
            for (String key : keySet) {
                Number value = agentValues.get(key);

                // System.out.println(key + ":" + value);

                tail.add(key + ":" + value);
            }
        }
        return tail;
    }
}

1 个答案:

答案 0 :(得分:0)

将一个堆栈跟踪放入catch块中,您就会知道确切的错误。

   try {
         pwfo = new BufferedWriter(new FileWriter("C:\\agentReport.txt", true));
         } catch (IOException e) {
           e.printstacktrace();
       }