私は、.txtファイルを取得し、データを別個のオブジェクトに集め、共有特性に基づいてそのリストをソートするように求められているクラスのプロジェクトに取り組んでいます。私の指示は、プログラムが最大200行のテキストをインポートできるようにすることです。Javaの多態性、継承、および配列ソートの演習
定義済みの配列サイズ(.txtファイルに6行、6要素の配列がある場合)を指定して.txtファイルをインポートするプログラムを正常に実装しましたが、これを200まで定義する必要があります要素。実際の要素の数、例えば6を超えると、NullPointerExceptionがスローされます。私のコードが出現する可能性のあるインスタンスを処理するために、少なくとも視覚的に表示されるので、これがどこで発生しているのかわかりません。問題が発生しているのはここである:
public Solid[] solids;
public int length;
public Measurer m;
public int h;
public SolidList(int size) {
length = 0;
solids = new Solid[size];
}
public void addSorted(Solid foo, Measurer m) {
int k = 0;
if (length != 0) {
while ((k < length) && foo.greaterThan(solids[k], m))
++k;
for (int j = length; j > k; --j)
solids[j] = solids[j - 1];
}
solids[k] = foo;
++length;
}
具体的には、EclipseはaddSorted(...)
でwhileループにNullPointerExceptionが遭遇しています。これは、配列に実際にnull要素がある場合にのみ発生しますが、メソッドがnull要素にアクセスしようとするのを防ぐ方法を見つけられないと思います。
まず、生の配列をインスタンスリストにするために、Javaコレクションを使用する方がはるかに優れています。この場合、サイズは先験的に与えられないかもしれない。 – gregory561
私はGregoryと一緒にArrayListをチェックしています - > http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html また、Collections.sortソートを行うコンパレータ - > http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#sort(java.util.List、java.util.Comparator ) –
あなたは本当に例外スタックトレースを掲示していたはずです。このように人々はあなたの問題を推測しているだけです。示されたコードは、fooが 'null'を除いてNPEを投げません。 stacktraceはおそらくNPEが 'greaterThan'メソッドの中からスローされたことを示します。 –