Generics-NullpointerException

Status
Nicht offen für weitere Antworten.

nar0x

Mitglied
Hallo Leute ich ahbe folgendes Problem:
Ich will eine Übungsaufgabe über generics schreibn aber ich bekomme bei der testklasse immer eine nullpointer exception:
Die Objektklasse:
Java:
public class Statistics<elem extends Comparable>{
	public int i;
	public int k=1;
	public elem[] list;
	public elem[] memory=(elem[])new Comparable[100];
	
    public void  Statistics(){
    	list= (elem[])new  Comparable[1];
    }
    
    public void add(elem x){
    	System.arraycopy(list,0,memory,0,list.length);
    	list=(elem[])new Comparable[k];
    	System.arraycopy(memory,0,list,0,list.length);
    	list[k-1]=x;
    	k++;
    	insertionSort(list);
    }
    
   
public void insertionSort(Comparable[] listtosort){
    	int n = listtosort.length;
    	for(int i=1; i<n;i++){
    		Comparable val=listtosort[i];
    		int j=i;
     		while((j > 0) && (listtosort[j-1].compareTo(val) >= 1)){
     			listtosort[j]=listtosort[j-1];
    			j--;
    		}
    		listtosort[j]=val;
    	}
    }
}

Die Testklasse(da hääte ich so noch ein kleines problem nämlich: gibt es bei den 2 auskommandierten steller immer einen ; expected Exception)

Java:
public class test {
	
	public static void main(String[] args){
		Statistics<Integer>stat=new Statistics<Integer>();
		stat.add(10);
		stat.add(100);
		stat.add(new Integer(13));
		int nOfElements=stat.getNOfElements();
		//ArrayList<Integer> stat.getLowestNElements(2);
		//ArrayList<Integer> stat.getHighestNElements(1);
		int n= stat.getNOfEqualElements();
		stat.printAll();
		
	}
}

bitte um hilfe ;)
mfg nar0x
 

Landei

Top Contributor
Muss es unbedingt ein Array sein? Die passen nämlich mit Generics überhaupt nicht zusammen. Eine Liste wäre wesentlich eleganter:

(ungetestet)
Java:
public class Statistics<E extends Comparable<E>>{
    private List<E> list = new ArrayList<E>();
   
    public void add(E e){
        for(int i = 0; i < list.size(); i++) {
            if(list.get(i).compareTo(e) >= 0) {
               list.add(i,e);
               return; 
            }
         }  
         list.add(e);
    }

}
 

Das AlgoTool

Mitglied
Die beiden auskommentierten Zeilen sehen irgendwie unvollständig aus. Eine Variable, in der die N Elemente gespeichert werden sollen, wäre sicher nicht verkehrt. ;)

Ansonsten sind die Casts in der Statistics-Klasse ziemlich hässlich. Wenn du schon weißt, dass du elems bekommst, dann erzeug doch auch ein neues elem-Array und kein Comparable-Array, von dem du dann behauptest, es wäre ein elem-Array.
 

Landei

Top Contributor
Ansonsten sind die Casts in der Statistics-Klasse ziemlich hässlich. Wenn du schon weißt, dass du elems bekommst, dann erzeug doch auch ein neues elem-Array und kein Comparable-Array, von dem du dann behauptest, es wäre ein elem-Array.

Das funktioniert "dank" Type-Erasure nicht so ohne weiteres, denn dazu müste man Array.newInstance(Class<elem>, dimensions) aufrufen, also Class<elem> im Konstruktor oder so übergeben lassen.
 

nar0x

Mitglied
ja das hab ichs chon versucht mit dem array aber dann kommt halt eben ne fehlermeldung: generic array creation ^^


naja ich glaub bei der liste is noch n fehler drin weil man kann ja nicht die Schnittstelle add(E e) angeben und dann aber mit add(i,e) aufrufen oder?
das passt ja dann nicht mit der Schnittstelle zusammen???
 
Zuletzt bearbeitet:

nar0x

Mitglied
ich hab diese Versoin ausprobiert aber bei mir meldet er jz imma:
cannot find Symbol class List
cannot find Symbol class ArrayList

muss ich da noch etwas implementieren?
 

nar0x

Mitglied
ok thx is erledigt habe das Programm thx für eure hilfe:
her ist der fertige code:
Die Object-Klasse
Java:
import java.util.List;
import java.util.ArrayList;


public class Statistics<elem extends Comparable<elem>>{
	
	private List<elem> list = new ArrayList<elem>();
	
	public void  Statistics(){
    	
    }
	
	public void add(elem e){
        for(int i = 0; i < list.size(); i++) {
            if(list.get(i).compareTo(e) >= 0) {
               list.add(i,e);
               return; 
            }
         }  
         list.add(e);
    }

	public int getNOfElements(){
    	return list.size();
    }
    
    public List getLowestNElements(int n){
    	List<elem> mem = new ArrayList<elem>();
    	for(int i=0;i<n; i++){
    		mem.add(i,list.get(i));
    	}
    	return mem;
    }
    
    public List getHighestNElements(int n){
    List<elem> mem = new ArrayList<elem>();
    	int k=0;
    	for(int i=list.size()-n;i<list.size(); i++){
    		mem.add(k,list.get(i));
    		k++;
    	}
    	return mem;
    }
    
    public int getNOfEqualElements(){
    	int i=0;
    	int z=1;
    	int k=1;
    	int size=list.size();
    	int count=0;
    	while(i<size){
    		while(k<size){
    			if(list.get(i).equals(list.get(k))==true){
    				count++;
    			}
    			k++;
    		}
    		z++;
    		k=z;
    		i++;
    	}
    	return count;
    }
    
    public void printAll(){
    	for(int i=0;i<list.size();i++){
    		System.out.print(list.get(i)+"|");
    	}
    }
    
  
    
	
}

und die Testkalss:
Java:
import java.util.List;
import java.util.ArrayList;

public class test {
	
	public static void main(String[] args){
		Statistics<Integer>stat=new Statistics<Integer>();
		stat.add(10);
		stat.add(100);
		stat.add(100);
		stat.add(163573);
		stat.add(56);
		stat.add(56);
		stat.add(new Integer(13));
		int nOfElements=stat.getNOfElements();
		System.out.println(nOfElements);
		
		List<Integer> Low =new ArrayList<Integer>();
		List<Integer> High=new ArrayList<Integer>(); 
		Low=stat.getLowestNElements(4);
		High=stat.getHighestNElements(2);
		for(int i=0;i<Low.size();i++){
    		System.out.print(Low.get(i)+"|");
    	}
		System.out.println();
		for(int k=0;k<High.size();k++){
    		System.out.print(High.get(k)+"|");
    	}
		System.out.println();
		System.out.println(stat.getNOfEqualElements());
		stat.printAll();
		
		
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Best Practice Generics mit Enum Allgemeine Java-Themen 3
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
Zeppi Cast Object in Generics Allgemeine Java-Themen 4
P Generics und Arrays Allgemeine Java-Themen 6
M Generics / Typen Allgemeine Java-Themen 1
Kirby.exe InsertionSort mit Generics Allgemeine Java-Themen 33
Kirby.exe Vererbung bei Generics Allgemeine Java-Themen 7
H Klarnamen etc... (von Wie Generics lernen?) Allgemeine Java-Themen 26
D Wie Generics lernen? Allgemeine Java-Themen 26
L Compiler-Fehler Generics beim Anhängen von Predicates Allgemeine Java-Themen 1
W Vererbung Generics - mal wieder die verhaßte Rückwärtskompatibilität Allgemeine Java-Themen 2
S Verstaendnisfrage Generics Allgemeine Java-Themen 19
W Generics + Vererbung Allgemeine Java-Themen 47
I Methoden Generics-Methode Allgemeine Java-Themen 3
D Mit Generics arbeiten - Übungsaufgabe Allgemeine Java-Themen 3
K Factory Pattern: Mit Generics umgehen Allgemeine Java-Themen 6
G Generics Allgemeine Java-Themen 31
perlenfischer1984 Liste mit generics zurück liefern Allgemeine Java-Themen 8
Hacer Generics & Collections Allgemeine Java-Themen 8
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
C Gemeinsame Oberklasse zweier Generics Allgemeine Java-Themen 10
erdmann Datentypen Methodendeklaration mit Generics Allgemeine Java-Themen 2
Z Datentypen Verschachtelte Generics Allgemeine Java-Themen 1
Neumi5694 Datentypen Generics Allgemeine Java-Themen 5
S Mit Generics Klasse erstellen die selbst T erweitert..? Allgemeine Java-Themen 4
Tarrew Generics - Type erasure Allgemeine Java-Themen 5
N Problem mit Generics und Interface Allgemeine Java-Themen 4
H Generics als Parameter Allgemeine Java-Themen 1
kaoZ Generics und Vererbung Allgemeine Java-Themen 3
A Datentypen Generics: Wie am besten auf Typparameter zugreifen Allgemeine Java-Themen 2
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
vandread Kleine Generics Aufgabe aus einer Prüfung... wie ist das gemeint? Allgemeine Java-Themen 6
G Generics sind zu streng - oder ich zu naiv? Allgemeine Java-Themen 3
G Verschachtelte Generics Allgemeine Java-Themen 2
O Generics Allgemeine Java-Themen 42
M Problem mit Generics Allgemeine Java-Themen 10
M Generics (bounded wildcards statt Interface Bezeichnern) -- Sinn oder Unsinn? Allgemeine Java-Themen 2
darekkay Generics: Wildcard und Object Allgemeine Java-Themen 5
H Collections Generics und Reflection Allgemeine Java-Themen 6
F Google Guice + Generics + Vererbung Allgemeine Java-Themen 5
H Problem mit Java Generics Allgemeine Java-Themen 6
J Generics: Typparameter als Klasse zurückliefern Allgemeine Java-Themen 4
H Generics Allgemeine Java-Themen 5
P Probleme mit Generics Allgemeine Java-Themen 5
B Generics und primitve arrays Allgemeine Java-Themen 6
M Generics Allgemeine Java-Themen 11
1 Collections Generics, internes Verhalten Allgemeine Java-Themen 16
T Warnungsfreie Verwendung von Generics Allgemeine Java-Themen 11
M Probleme mit Generics Allgemeine Java-Themen 5
D Java Generics Allgemeine Java-Themen 8
2 Generics: bounded wildcards Allgemeine Java-Themen 4
J Generics / vermeiden von downcasts Allgemeine Java-Themen 2
2 Generics oder nicht? Allgemeine Java-Themen 8
E Problem mit Generics und Comparable Allgemeine Java-Themen 16
W Erweitern einer Klasse mit Generics Allgemeine Java-Themen 8
H Generics für Methode Allgemeine Java-Themen 14
N Überladen mit Hilfe von Generics Allgemeine Java-Themen 3
S Generics: Fuer Set<T> ein T-Klassenobjekt erhalten? Allgemeine Java-Themen 3
Q Der innere Typ von Generics? Allgemeine Java-Themen 3
2 Generics - Typ Allgemeine Java-Themen 12
P Generics Problem Allgemeine Java-Themen 10
S Type safety Warnings beim casten von Generics Allgemeine Java-Themen 6
N Generics Allgemeine Java-Themen 3
V Frage zu Generics Allgemeine Java-Themen 2
S java generics klassen deklaration Allgemeine Java-Themen 7
B hashtable für unterschiedliche Typen - mit Generics Allgemeine Java-Themen 8
E Generics Allgemeine Java-Themen 3
MQue Generics Allgemeine Java-Themen 4
R Problem mit Reflection und Generics Allgemeine Java-Themen 3
C Klassen, die aufeinander verweisen (mit Generics) Allgemeine Java-Themen 16
G Generics - W.card unter Nutzung von Annotationsklasse? Allgemeine Java-Themen 6
G sortieren von generics Allgemeine Java-Themen 10
G Generics in Map. Type of value abhängig vom key Allgemeine Java-Themen 3
A Generics Verständnisfrage Allgemeine Java-Themen 7
Z Generics funzt nicht? Allgemeine Java-Themen 2
T Generics Allgemeine Java-Themen 18
G ComboBox: Nur eine Art Klasse zulassen (Generics) Allgemeine Java-Themen 3
J Generics Expertenwissen? Allgemeine Java-Themen 5
S Generics-Problem Allgemeine Java-Themen 3
T Generics und Wil-dcards Allgemeine Java-Themen 8
Q Typen von Generics & Casten Allgemeine Java-Themen 3
S Generics Allgemeine Java-Themen 2
R Problem mit Generics Allgemeine Java-Themen 2
G Trotz Generics Cast-Fehler! Allgemeine Java-Themen 5
T TreeMap durch Comparator mit Generics sortieren Allgemeine Java-Themen 9
T Generics und instanceof Allgemeine Java-Themen 10
T Generics und Exceptions Allgemeine Java-Themen 6
M Beliebig viele Typen bei Generics Allgemeine Java-Themen 3
G Reflection objekt mit generics erzeugen Allgemeine Java-Themen 5
S Singleton Pattern mit Generics Allgemeine Java-Themen 4
G Generics und Comparable Allgemeine Java-Themen 11
H Generics Problem Allgemeine Java-Themen 3
F Generics: spricht etwas dagegen raw types zu verwenden? Allgemeine Java-Themen 31
M Generics - besser programmieren, Warnung umgehen Allgemeine Java-Themen 4
E Java, UML, Generics Allgemeine Java-Themen 6
P Array von Vectoren + Generics Allgemeine Java-Themen 6
M ArrayList erweitern - generics Allgemeine Java-Themen 4
E Generics -> UML Allgemeine Java-Themen 4
G Generics: Instanzieren einer Klasse in einer Methode. Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben