0

ファイルから読み取り、最も使用されている文字と最も使用されていない文字を検出する割り当てに取り組んでいます。これは私が得る出力です。

Would you like to input a directory for a .dat file? Input Yes or No
Yes
Please input file location
G:\test.dat
Exception in thread "main" java.lang.NullPointerException
at Histogram.loadAndAnalyzeFile(Histogram.java:62)
at lab21c.main(newlab21c.java:15)

Process completed.

ここに私のヒストグラムファイルがあります

//© A+ Computer Science  -  www.apluscompsci.com
//Name -
//Date -
//Lab  - 

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import static java.lang.System.*;

public class Histogram
{
    private ArrayList<Integer> count;
    int counter = 0;
    private String[] Letters =     {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
    private String fileName;
    ArrayList<String> storageStr;
    String Yes = "Yes";
        String Decision = "";
    String Location = "";
    String add = "";
    Scanner Keyboard = new Scanner(System.in);

    public Histogram()
    {




    }

    public Histogram(char[] values, String fName)
    {






    }

     public void loadAndAnalyzeFile() throws IOException
     {
        System.out.println("Would you like to input a directory for a .dat     file? Input Yes or No");
        Decision = Keyboard.next();




        if (Decision.equals(Yes))
        {
            System.out.println("Please input file location");
            String location = Keyboard.next();
            Scanner file = new Scanner(new File(location));


            while (file.hasNext())
            {
                add = file.next();
                storageStr.add(add);
            }

        }
        String[]Holder = new String[storageStr.size()-1];

        for (int run = 0; run < storageStr.size(); run++)
        {
            Holder[run].equals(storageStr.get(run));

            for (int run1 = 0; run1 < Letters.length; run1++)
            {
               char Charletters = Letters[run1].charAt(0);

               for (int run2 = 0; run2 < Holder.length; run2++)
               {
                    if (Holder[run].charAt(run2) == Charletters)
                    {
                        counter++;
                    }
                }
                System.out.println(counter);
            }
        }









    }

    public char mostFrequent()
    {

        return '#';
    }

    public char leastFrequent()
    {


            return '#';
    }

    public String toString()
    {
       return fileName
       + "\n" + count + "\n\n\n";
    }
}

私が現在行っているのは、ファイルから読み取った文字列を変換し、それを char に変換して文字と比較しようとしています。カウンターを表示しているので動作しているかどうかはわかりますが、そのエラーが発生します。これが私の newlab12c ファイルです。

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import static java.lang.System.*;
import java.io.FileNotFoundException;

class lab21c
{
    public static void main(String[] args)throws java.io.IOException
    {
        Histogram histogram = new Histogram();

        histogram.loadAndAnalyzeFile();
    }
}

誰かが助けを与えることができれば、それは大歓迎です。

4

1 に答える 1

5

私のIDEによると、データ構造Line 62の操作が含まれています。storageStr私が気付いたのは、データ構造を初期化することは決してないということです。つまり、データ構造に対する操作はNullPointerException.

たとえば、コンストラクターを次のように変更します。

public Histogram()
{
    storageStr = new ArrayList<String>();
    count = new ArrayList<Integer>();
}

問題の解決に役立つはずです。

于 2013-04-15T05:07:27.373 に答える