G
Guest
Gast
Hallo Leute,
ich hab heute schon den ganzen Tag damit verbracht an einem Programm herum zubasteln [ich weiß sellten genau was ich tue ;-) ] doch leider bekomme ich immer wieder einen Fehler denn ich verflixt nochmal nicht finde bzw. von dem ich nicht weiß wieso er genau im Programm entsteht und deshalb kann ich schlecht was dagegen tun.
Ich hoffe ihr könnt mir dabei helfen und mir erklären wie ich diesen Fehler 'abstellen' kann.
Dazu hab ich kurzerhand mal das Programm soweit zusammen gekürzt das man es schneller überblicken kann. Der Fehler ist natürlich auch noch da irgendwo, denn ich erhalte immernoch das selbe Fehlerverhalten.
Letzteres äußert sich darin das das Prog. eigentlich funktioniert jedoch des öfteren besagte IndexOutOfBoundsException auftritt. Ich weiß das diese Ausnahme z.B. dann auftritt, wenn man bei einem Array einen Index verwendet der über dem größten selbigen Arrays liegt. Also z.B. bei
auf
zugreife da der Index halt nicht im Array existiert...
Aber ich verwende eigentlich gar keine Arrays in meinem Programm, sondern statt dessen LinkedList, was mich nun also wundert warum der Fehler auftritt.
Ich weiß es kostet relativ viel Zeit sich sowas anzugucken und nach der Nadel im Heuhaufen zu suchen, noch dazu wenn es nicht die eigene Nadel ist aber ich komme ohne Hilfe momentan nicht weiter und bitte euch inständig darum mir zu helfen und danke schon einmal allen die es zumindest versuchen.
Das Problem steck irgendwo hier drin:
Das Programm soll im Grunde nur die Reihenfolge der Elemente eine beliebige LinkedList in kräftig in Unordnung brigen.
Zu Testzwecken hab ich dann mal die main-Methode integriert.
In der erzeuge ich eine LinkedList und füge ihr 6 Elemente bestehend aus Objekten der Klasse Xvalue (ganz unten zu finden) hinzu. Anschließend gebe ich die Liste zur 'Visualisierung' mit der dafür geschriebenen Methode printList() aus. Das Ergebniss ist sieht so aus:
Jetzt möchte ich die Reihenfolge der Elemente in der erstellten Liste durcheinander bringen, dazu dient die Methode mixList(LinkedList). Doch irgendwo da muss ein Fehler sein, denn ich nicht finde denn gelegentlich klappt dieses Vorhaben nicht und die Ausgabe sieht anstatt so...:
...machmal so aus:
Was kann ich da tun?
PS: In meinem Browserfenster sieht die Zeilenanzeige beim Code-Text ein bischen ungenau, will heißen falsch aus.
In meinem Programmiertool sind die Zeilen 18 und 34 die Folgenden:
ich hab heute schon den ganzen Tag damit verbracht an einem Programm herum zubasteln [ich weiß sellten genau was ich tue ;-) ] doch leider bekomme ich immer wieder einen Fehler denn ich verflixt nochmal nicht finde bzw. von dem ich nicht weiß wieso er genau im Programm entsteht und deshalb kann ich schlecht was dagegen tun.
Ich hoffe ihr könnt mir dabei helfen und mir erklären wie ich diesen Fehler 'abstellen' kann.
Dazu hab ich kurzerhand mal das Programm soweit zusammen gekürzt das man es schneller überblicken kann. Der Fehler ist natürlich auch noch da irgendwo, denn ich erhalte immernoch das selbe Fehlerverhalten.
Letzteres äußert sich darin das das Prog. eigentlich funktioniert jedoch des öfteren besagte IndexOutOfBoundsException auftritt. Ich weiß das diese Ausnahme z.B. dann auftritt, wenn man bei einem Array einen Index verwendet der über dem größten selbigen Arrays liegt. Also z.B. bei
Code:
char letters[] = {'a','b'};
Code:
...=letters[2];
Aber ich verwende eigentlich gar keine Arrays in meinem Programm, sondern statt dessen LinkedList, was mich nun also wundert warum der Fehler auftritt.
Ich weiß es kostet relativ viel Zeit sich sowas anzugucken und nach der Nadel im Heuhaufen zu suchen, noch dazu wenn es nicht die eigene Nadel ist aber ich komme ohne Hilfe momentan nicht weiter und bitte euch inständig darum mir zu helfen und danke schon einmal allen die es zumindest versuchen.
Das Problem steck irgendwo hier drin:
Code:
import java.util.*;
public class WhatsUp{
public static void main (String[] args){
LinkedList xValueList = new LinkedList();
xValueList.addLast(new Xvalue(1));
xValueList.addLast(new Xvalue(2));
xValueList.addLast(new Xvalue(3));
xValueList.addLast(new Xvalue(4));
xValueList.addLast(new Xvalue(5));
xValueList.addLast(new Xvalue(6));
printList(xValueList, "Sortierte Liste");
LinkedList mixedXvalueList = new LinkedList();
mixedXvalueList = mixList(xValueList); //<----Fehlerzeile 18 laut Ausgabe
printList(mixedXvalueList, "ungeordnete Liste");
}
public static LinkedList mixList(LinkedList parList){
LinkedList unsortedList = new LinkedList();
LinkedList sortedList = parList;
Object ListObject = new Object();
int randInt;
int sortedListSize;
while (sortedList.isEmpty()==false){
sortedListSize = sortedList.size();
randInt = RandTools.randInt(0,sortedListSize);
ListObject = (Object)sortedList.remove(randInt); //<--Fehlerzeile 34
unsortedList.addLast(ListObject);
}
return unsortedList;
}
public static void printList(LinkedList parList, String parListName){
int listSize = parList.size();
Xvalue helpVal;
System.out.println(parListName+" mit "+listSize+" Elementen in folgender Reihenfolge:");
for (int x=0; x<listSize; x++){
helpVal = (Xvalue) parList.get(x);
System.out.println(helpVal.getX());
}
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Ausschnitt der einzigen benutzten Methode aus eigener RandTools Klasse
//____________________________________________________________________________
class RandTools{
public static int randInt(int parMinVal, int parMaxVal){
int minValue = parMinVal;
int maxValue = parMaxVal;
int modValue = (maxValue-minValue+1);
int result;
Random rand = new Random(System.currentTimeMillis());
result = Math.abs(rand.nextInt()%modValue);
result = result+minValue;
return result;
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Klasse Xvalue
//____________________________________________________________________________
class Xvalue {
private int x;
//Konstruktor:
Xvalue(int xValue){
setValue(xValue);
}
public void setValue(int xValue){
x = xValue;
}
public int getX()
{
return x;
}
}
Das Programm soll im Grunde nur die Reihenfolge der Elemente eine beliebige LinkedList in kräftig in Unordnung brigen.
Zu Testzwecken hab ich dann mal die main-Methode integriert.
In der erzeuge ich eine LinkedList und füge ihr 6 Elemente bestehend aus Objekten der Klasse Xvalue (ganz unten zu finden) hinzu. Anschließend gebe ich die Liste zur 'Visualisierung' mit der dafür geschriebenen Methode printList() aus. Das Ergebniss ist sieht so aus:
Code:
Sortierte Liste mit 6 Elementen in folgender Reihenfolge:
1
2
3
4
5
6
Jetzt möchte ich die Reihenfolge der Elemente in der erstellten Liste durcheinander bringen, dazu dient die Methode mixList(LinkedList). Doch irgendwo da muss ein Fehler sein, denn ich nicht finde denn gelegentlich klappt dieses Vorhaben nicht und die Ausgabe sieht anstatt so...:
Code:
ungeordnete Liste mit 6 Elementen in folgender Reihenfolge:
4
1
5
6
2
3
...machmal so aus:
Code:
java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
at java.util.LinkedList.entry(LinkedList.java:360)
at java.util.LinkedList.remove(LinkedList.java:350)
at WhatsUp.mixList(WhatsUp.java:34)
at WhatsUp.main(WhatsUp.java:18)
Exception in thread "main"
Was kann ich da tun?
PS: In meinem Browserfenster sieht die Zeilenanzeige beim Code-Text ein bischen ungenau, will heißen falsch aus.
In meinem Programmiertool sind die Zeilen 18 und 34 die Folgenden:
Code:
mixedXvalueList = mixList(xValueList);
Code:
ListObject = (Object)sortedList.remove(randInt);