So habe ich versucht, den Maximalwert innerhalb einer Array-Typ "T" -Liste zurückgeben und einen Fehler bei der Verwendung von compareTo erhalten. Dies ist der vollständige Code.Fehler beim Versuch, Max-Wert im Array zu erhalten
package myUtil;
public class SimpleListAry<T extends java.lang.Comparable<T>> extends java.lang.Object implements SimpleList<T> {
private T[] myList;
private int size;
public SimpleListAry(){
myList = (T[])new Comparable[10];
}
public SimpleListAry(int capacity){
if (capacity <= 0){
throw new IllegalArgumentException();
}
myList = (T[]) new Object [capacity];
}
@Override
public int size() {
size = myList.length;
return size;
}
@Override
public T get(int i) {
return myList[i];
}
@Override
public T set(int i, T item) {
return myList[i] = item;
}
@Override
public int indexOf(Object item) {
for (int i = 0; i < size; i++){
if (get(i).equals(item)){
return i;
}
}
return -1;
}
@Override
public void add(int at, T item) {
if (at < 0 || at > size)
throw new ArrayIndexOutOfBoundsException(at);
for (int i = size; i > at; i--){
myList[i] = myList [i-1];
}
// myList[at] = item;
size++;
}
@Override
public T remove(int at) {
if (at < 0 || at >= size)
throw new ArrayIndexOutOfBoundsException(at);
T item = myList[at];
for (int i = at; i<size-1; i++)
myList[i] = myList[i+1];
size--;
return item;
}
@Override
public T max() {
T max = myList[0];
for (int i = 1; i < myList.length; i++){
if(myList[i].compareTo(max) == 1)
max = myList[i];
}
return max;
}
@Override
public T min() {
T min = myList[0];
for (int i = 1; i < size -1; i++){
if (myList[i].compareTo(min) == -1)
min = myList[i];
}
return min;
}
}
und der Fehler ist bei Public T max():
public T max() {
T max = myList[0];
for (int i = 1; i < myList.length; i++){
if(myList[i].compareTo(max) == 1)
max = myList[i];
}
return max;
}
Ich habe auch versucht mit ">", um sie zu vergleichen, aber das war auch nicht arbeiten. Es kann aufgrund des Datentypen sein, aber es ist kein Fehler in der IDE nur, wenn ich es zu laufen versuchen, und es verweist direkt auf diese Zeile in T max() {
if(myList[i].compareTo(max) == 1)
Schreiben Sie die Fehlermeldung bitte. – shmosel
"Ausnahme im Thread" main "java.lang.NullPointerException \t bei myUtil.SimpleListAry.max (SimpleListAry.java:77)" Zeile 77 zeigt auf die Zeile myList.compareTo –
Sie verwirren die Größe Ihrer Liste mit der Länge des zugrunde liegenden Arrays. – shmosel