kann fehler nicht finden

Status
Nicht offen für weitere Antworten.

Cyph3rlink

Mitglied
Ich will eine Reihe von Zahlen, der Länge array.length. Dabei sollen nur ganze Zahlen von 0 bis array.length -1 auftreten, und keine doppelt. Die Zahlen sollen in der Reihenfolge in der sie auftreten in den Array reihe für die spätere Verwendung gespeichert werden. Allerdings funktioniert das Ablegen der Zahlen Array reihe überhaupt nicht.

Hier der Quellcode, mit println()-Anweisungen zur Kontrolle versehen:

Code:
			BitSet b = new BitSet();
			while (cnt < array.length)
			{
				int num = Math.abs(r.nextInt()) % array.length;
				System.out.println(cnt+"   :     "+num);
				if (!b.get(num))
				{
					b.set(num);
					System.out.println("Count: "+cnt);
					reihe[cnt] = num;
					cnt++;
					System.out.println("\n SOLL IN ARRAY AUFGENOMMEN:  ------------>>>>>"+ num);
					System.out.println("\n ARRAY ABER ZEIGT:"+ reihe[cnt]);
				}
			}

Ich erhalte zum Beispiel diese beim Ausführen.

Code:
0   :     1
Count: 0

 SOLL IN ARRAY AUFGENOMMEN:  ------------>>>>>1

 ARRAY ABER ZEIGT:0
1   :     0
Count: 1

 SOLL IN ARRAY AUFGENOMMEN:  ------------>>>>>0

 ARRAY ABER ZEIGT:0
2   :     3
Count: 2

 SOLL IN ARRAY AUFGENOMMEN:  ------------>>>>>3

 ARRAY ABER ZEIGT:0
3   :     2
Count: 3

 SOLL IN ARRAY AUFGENOMMEN:  ------------>>>>>2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
	at TestCoop.main(TestCoop.java:45)

Die Zahlen werden also richtig ermittelt, nur kommt totaler Blödsinn im Array an.
 
S

SlaterB

Gast
merkwürdiges Vorgehen, als erstes würde ich ja an deiner Stelle das GESAMTE Array ausgeben,
irgendwohin müssen die Zahlen ja kommen ;)

dann sieht man schnell woran es liegt: du schreibst die Zahl in Feld cnt, vor der Ausgabe von Feld cnt erhöst du aber cnt um 1

dass am Ende eine ArrayIndexOutOfBoundsException kommt ist noch mal ein sehr deutlicher Hinweis darauf,

übrigens wäre es sehr nett, um deinen Code noch die Array- und sonstige Deklaration + einen einfache Testklasse mit main-Operation drumherum zu packen, das ist ne gute Übung und erleichtert anderen das testen

Code:
import java.lang.reflect.Array;
import java.util.BitSet;
import java.util.Random;

public class Test {

    public static void main(String[] args) throws Exception {
        System.out.println("start");

        Random r = new Random();
        int cnt = 0;
        int[] reihe = new int[6];
        BitSet b = new BitSet();
        int tries = 0;
        while (( tries < 1000 ) && ( cnt < reihe.length )) {
            int num = Math.abs(r.nextInt()) % reihe.length;
            System.out.println(cnt + "   :     " + num);
            tries++;
            if (!b.get(num)) {
                b.set(num);

                System.out.println("Count: " + cnt);
                reihe[cnt] = num;
                cnt++;
                System.out.println("SOLL IN ARRAY AUFGENOMMEN:  ------------>>>>>" + num);
                System.out.println("ARRAY ABER ZEIGT:" + toString(reihe));
            }
        }
        System.out.println("end");
    }

   
    private static String toString(Object arr) {
        if (arr == null) {
            return "null";
        }
        try {
            // is object an array?
            Array.getLength(arr);
        } catch (IllegalArgumentException e) {
            return arr.toString();
        }
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < Array.getLength(arr); i++) {
            s.append("_" + toString(Array.get(arr, i)));
        }
        return s.toString();
    }
}
 

Cyph3rlink

Mitglied
Tut mir leid dass ich hier nochmal fragen muss, wahrscheinlich ist es wieder was ganz einfaches was ich nur übersehe.

Wenn man jetzt das von oben in eine for-Schleife setzt, und mehrfahch durchlaufen lässt, warum hat dann der Array immer die gleichen Werte, und nicht jedesmal andere?

Code:
import java.lang.reflect.Array; 
import java.util.BitSet; 
import java.util.Random; 

public class Test { 

    public static void main(String[] args) throws Exception { 
        System.out.println("start"); 

        Random r = new Random(); 
        int cnt = 0; 
        int[] reihe = new int[6]; 
		for (int i =0; i< 10; i++)
		{
	        int tries = 0; 
			BitSet b = new BitSet(); 
	        while (( tries < 1000 ) && ( cnt < reihe.length )) 
	        { 
	        	int num = Math.abs(r.nextInt()) % reihe.length;  
	            tries++; 
	            if (!b.get(num)) 
	            { 
	                b.set(num); 

	                reihe[cnt] = num; 
	                cnt++;  
	            } 
	        }
	        b = null;
	        System.out.println("ARRAY HAT ZUM INHALT:" + toString(reihe));

		}
                System.out.println("end"); 
    } 

    
    private static String toString(Object arr) { 
        if (arr == null) { 
            return "null"; 
        } 
        try { 
            // is object an array? 
            Array.getLength(arr); 
        } catch (IllegalArgumentException e) { 
            return arr.toString(); 
        } 
        StringBuilder s = new StringBuilder(); 
        for (int i = 0; i < Array.getLength(arr); i++) { 
            s.append("_" + toString(Array.get(arr, i))); 
        } 
        return s.toString(); 
    } 
}
 
S

SlaterB

Gast
> Danke. Ich hab des wirklich übersehen *schäm*.

ich übersehe sowas auch 10x täglich,
die Kunst ist nicht (unbedingt) das zu sehen,
sondern Fehler Schritt für Schritt aufzuspüren,

das erfordert kein Können und keine Erfahrung,
sondern nur Fleiß wie die Ausgabe des ganzen Arrays (einfacher per for-Schleife)
 
S

SlaterB

Gast
für Fragen muss man sich nicht entschuldigen,

aber schade, wohl noch nichts gelernt, ich bemühe mich doch immer so ;)

ich selber habe deinen Code gesehen und erstmal auch nicht gewußt woran es liegt,
weiß ich doch aus meiner Erfahrung, dass Random mehr als 6 Werte kennt und anscheinend kontinuierlich aufgerufen wird,

was mache ich da?
erstmal zur Vereinfachung das Array auf Länge 1, und dann jeden Random-Wert mit System.out ausgeben,
siehe da, es wird nur einmal Random aufgerufen,

dann muss man entweder weiterforschen woran das liegt oder denkt sich dass das mit irgendwelchen if/ while-Bedingungen zu tun hat
-> ach ja, cnt wird gar nicht auf 0 zurückgesetzt, daher das ganze Array nur einmal initialisiert

Code:
import java.lang.reflect.Array;
import java.util.BitSet;
import java.util.Random;

public class Test {

	public static void main(String[] args) throws Exception {
		System.out.println("start");

		Random r = new Random();
		int cnt = 0;
		int[] reihe = new int[1];
		for (int i = 0; i < 10; i++) {
			int tries = 0;
			BitSet b = new BitSet();
			while ((tries < 1000) && (cnt < reihe.length)) {
				int a = r.nextInt();
				System.out.println(a);
				int num = Math.abs(a) % reihe.length;
				tries++;
				if (!b.get(num)) {
					b.set(num);

					reihe[cnt] = num;
					cnt++;
				}
			}
			b = null;
			System.out.println("ARRAY HAT ZUM INHALT:" + toString(reihe));

		}
		System.out.println("end");
	}

	private static String toString(Object arr) {
		if (arr == null) {
			return "null";
		}
		try {
			// is object an array?
			Array.getLength(arr);
		} catch (IllegalArgumentException e) {
			return arr.toString();
		}
		StringBuffer s = new StringBuffer();
		for (int i = 0; i < Array.getLength(arr); i++) {
			s.append("_" + toString(Array.get(arr, i)));
		}
		return s.toString();
	}
}

(mit StringBuffer statt StringBuilder, da zu Hause kein Java 1.5 ;) )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Lottospiel kann Fehler nicht finden Java Java Basics - Anfänger-Themen 6
A Compiler-Fehler Kann Fehler nicht finden Java Basics - Anfänger-Themen 2
J Methoden Kann Fehler nicht finden Java Basics - Anfänger-Themen 6
B QuickSort - Fehler nicht zu finden Java Basics - Anfänger-Themen 2
I ';' expected, kann den Fehler nicht finden... Java Basics - Anfänger-Themen 2
O kann den fehler nicht finden Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
B Nicht reproduzierbarer Fehler bei Kompilierung - Shortcut "Bereinigung" Compiler ? Java Basics - Anfänger-Themen 4
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
J Fehler den ich nicht kapiere Java Basics - Anfänger-Themen 9
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
P Fehler: Hauptklasse [Klassenname] konnte nicht gefunden oder gelad Java Basics - Anfänger-Themen 4
Z Montageberechnungs programm, finde leider den Fehler nicht Java Basics - Anfänger-Themen 13
S Finde den fehler nicht Java Basics - Anfänger-Themen 1
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
M Methoden Fehler und finde die Lösung nicht wirklich Java Basics - Anfänger-Themen 6
N Ausführung gibt keinen Fehler an, Return wird aber nicht ausgegeben Java Basics - Anfänger-Themen 22
T Input/Output Leerzeilen in Ausgabe -> finde den Fehler nicht Java Basics - Anfänger-Themen 10
T Input/Output Programm terminiert nicht -> stürzt ab, wo Fehler? Java Basics - Anfänger-Themen 3
S Fehler: Hauptklasse bin.demo.Start konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 2
M Klassen Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 17
Z Finde den Fehler nicht ! Java Basics - Anfänger-Themen 3
snipesss IDE zeigt keine Fehler an, Programm wird jedoch nicht ausgeführt. Java Basics - Anfänger-Themen 18
P Irgendein billiger Fehler aber ich find ihn nicht Java Basics - Anfänger-Themen 16
S Compiler-Fehler Finde den Fehler nicht... Java Basics - Anfänger-Themen 4
S Compiler-Fehler error: ';' expected (finde Fehler nicht) Java Basics - Anfänger-Themen 10
J TCP MultiThreaded Server und Client - irgendwo ist der Fehler, aber ich find ihn nicht Java Basics - Anfänger-Themen 3
M Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 6
A Erste Schritte Nicht zu findender Fehler beim Auslesen eines Buchstabens Java Basics - Anfänger-Themen 4
A Nicht zu findender Fehler in einem try/catch Block Java Basics - Anfänger-Themen 6
D Code Fehlerhaft finde den Fehler nicht. Java Basics - Anfänger-Themen 1
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
D Variable nicht initialisiert? (Fehler) Java Basics - Anfänger-Themen 2
R Finde den Fehler nicht Java Basics - Anfänger-Themen 4
M Erste Schritte sehe Fehler bei der while schleife nicht... Java Basics - Anfänger-Themen 5
A finde fehler nicht Java Basics - Anfänger-Themen 9
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
M Sortieren von Zahlen: Code ohne Fehler, funktioniert trozdem nicht Java Basics - Anfänger-Themen 2
J Vererbung Kleiner Fehler, weiß aber nicht warum und wo Java Basics - Anfänger-Themen 9
X StackOverflowError, finde den Fehler nicht Java Basics - Anfänger-Themen 5
M Methoden Fehler in Methode - Finde ihn nicht Java Basics - Anfänger-Themen 7
I Fehler: Hauptklasse com.sun.tools.javac.main konnte nicht gefunden werden Java Basics - Anfänger-Themen 3
M Webstart Startet nicht Fehler Java Basics - Anfänger-Themen 5
Dogge nicht erkennbarer Fehler Java Basics - Anfänger-Themen 10
P Benötige Hilfe - finde Fehler nicht. Java Basics - Anfänger-Themen 3
J "ArrayIndexOutOfBoundsException", finde den Fehler schlicht nicht Java Basics - Anfänger-Themen 6
G Eclipse gibt Fehler aus, Jelliot (z.B.) nicht Java Basics - Anfänger-Themen 1
V finde meinen Fehler nicht Java Basics - Anfänger-Themen 10
M Ganz einfaches Beispiel, finde den Fehler aber nicht :( Java Basics - Anfänger-Themen 2
J Finde Fehler bei kleinem Programm nicht Java Basics - Anfänger-Themen 3
V Ganz kurze Java-Hilfe - Ich finde meinen Fehler nicht Java Basics - Anfänger-Themen 4
S Out of bounds exception. Finde den fehler nicht Java Basics - Anfänger-Themen 13
U finde fehler nicht! bitte um hilfe Java Basics - Anfänger-Themen 8
C ich finde den fehler nicht Java Basics - Anfänger-Themen 4
J Finde die Fehler nicht Java Basics - Anfänger-Themen 2
M Finde Fehler nicht: NotSerializableException Java Basics - Anfänger-Themen 2
F Finde den Fehler nicht Java Basics - Anfänger-Themen 4
X Ich weiß, wo der Fehler ist, kann ihn aber nicht beheben Java Basics - Anfänger-Themen 2
J class, interface, or enum expected - finde Fehler nicht. Java Basics - Anfänger-Themen 4
L welchen fehler übersehe ich? ...kompilieren funkt. nicht Java Basics - Anfänger-Themen 23
U Finde den fehler nicht Java Basics - Anfänger-Themen 9
M jdownloader startet nicht JAVA fehler Java Basics - Anfänger-Themen 4
J Kann den fehler nicht finde!!! Java Basics - Anfänger-Themen 7
H Eclipse: Programm startet nicht, wie Fehler feststellen? Java Basics - Anfänger-Themen 5
S Finde den Fehler nicht/ verstehe Anweisung nicht Java Basics - Anfänger-Themen 12
S Finde den Fehler nicht ! Java Basics - Anfänger-Themen 8
W Java Anfänger... Finde fehler nicht Java Basics - Anfänger-Themen 11
H Fehler "Methode xy ist nicht definiert" Java Basics - Anfänger-Themen 2
B Java programm mit Arrays. finde den Fehler nicht Java Basics - Anfänger-Themen 3
U Finde den fehler nicht Java Basics - Anfänger-Themen 10
C Fehler beim ausgführen von Java App als nicht Admin u. Vista Java Basics - Anfänger-Themen 6
R Observer funktioniert nicht. Sehe keine Fehler Java Basics - Anfänger-Themen 2
U Finde den fehler nicht Java Basics - Anfänger-Themen 6
C Finde meinen Fehler nicht Java Basics - Anfänger-Themen 6
F.S.WhiTeY Java RegEx Will nicht so wie ich will. Wo ist mein fehler ? Java Basics - Anfänger-Themen 3
F Finde fehler nicht Java Basics - Anfänger-Themen 5
N finde die fehler nicht Java Basics - Anfänger-Themen 9
O Falsche Bed. (ein überlauf) seh den Fehler aber nicht. Java Basics - Anfänger-Themen 3
G Fehler: Methode für Typ nicht def. obwohl Methode vorhanden Java Basics - Anfänger-Themen 7
G Bild wird nicht neu gezeichnet - finde den Fehler nicht Java Basics - Anfänger-Themen 3
M Workaround für Fehler durch nicht vorhandenen Internetzugang Java Basics - Anfänger-Themen 3
S verstehe den fehler nicht Java Basics - Anfänger-Themen 14
S Finde den Fehler nicht Java Basics - Anfänger-Themen 13
R Klasse nicht sichtbar(kein private-Fehler) Java Basics - Anfänger-Themen 2
M wieso fehler das array nicht iniziiert obwohl es iniziiert Java Basics - Anfänger-Themen 3
N Fehler <identifier> expected. Weiss nicht was falsch i Java Basics - Anfänger-Themen 2
O problem mit document listener finde den fehler nicht Java Basics - Anfänger-Themen 2
O arrayindexoutofbounds finde den fehler nicht Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben