warum endlosschleife?

Razen

Mitglied
Java:
 public class LaufzeitFehler1 {
public static void doSomething(int[] feld) {
while (feld.length > 0)
doSomethingOther(feld);
}
public static void doSomethingOther(int[] feld) {
int[] args = new int[feld.length - 1];
for (int i = 0; i < args.length; i++)
args[i] = feld[i] - 3;
doSomething(args);
}
public static void main(String[] args) {
doSomething(new int[] { 1, 2, 3 });
}
}

warum ist das hier ne endlosschleife? so wie ich das sehe sollte beim aufruf von doSomething(args) ja das neue verkürzte Feld übergeben werden, wird es aber nicht - oder doch und feld-length ist unabhängig davon? versteh ich nicht ganz...
 

Mörketid

Aktives Mitglied
Hast Du mal gedebugged, wo er rein geht und wo nicht? Du rufst ja doSomething(args); immer wieder auf, nachdem Du args in der for Schleife komplett gefüllt hast. Das ist das Problem...was willst Du denn machen?
 
Zuletzt bearbeitet:

Razen

Mitglied
rofl, sry, hätte ich dazusagen müssen - ist ne klausurenaufgabe und ich muss den fehler feststellen, nun - ich hätte gesagt das die bedingung der wehile schleife irgendwann nicht mehr erfüllt ist weil 0 > 0 eben false ist - aber das Programm ist ne endlosschleife und ich versteh nicht warum...
 
S

SlaterB

Gast
sicherlich wird doSomething() mit einem verkürzten Array aufgerufen, und diese doSomething()-Ausführung hört dann auch bald auf (falls Array kurz genug),
aber die vorherigen Methoden-Aufrufe sind davon nicht betroffen,

wenn z.B. zu dem, der von main aus gestartet wird, zurückgekehrt wird, ist dort das lokale Array nicht verkürzt,
mindestens diese Ausführung läuft ewig, manch andere aber auch
 

Razen

Mitglied
Hä`? aber es wechselt doch immer zwischen doSomething und doSomethingOther - und wenn bei doSomething die while schleife nicht mehr erfüllt ist wie kann doSomethingOther dann noch aufgerufen werden!?!?
 
S

SlaterB

Gast
Java:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        LaufzeitFehler1.main(null);
    }
}


class LaufzeitFehler1
{
    static int uniqueIdGetter;

    public static void doSomething(int[] feld) throws Exception
    {
        int my = uniqueIdGetter;
        uniqueIdGetter++;

        System.out.println("doSomething mit Nummer " + my + " startet, Feld: " + feld.length);
        int count = 0;
        while (feld.length > 0)
        {
            count++;
            System.out.println("doSomething mit Nummer " + my + " ist in Runde " + count);
            doSomethingOther(feld);
            Thread.sleep(100);
        }
        System.out.println("doSomething mit Nummer " + my + " endet");
    }

    public static void doSomethingOther(int[] feld) throws Exception
    {
        int[] args = new int[feld.length - 1];
        for (int i = 0; i < args.length; i++)
        {
            args[i] = feld[i] - 3;
        }
        doSomething(args);
    }

    public static void main(String[] args) throws Exception
    {
        doSomething(new int[]
            {1, 2, 3});
    }
}
->

Code:
doSomething mit Nummer 0 startet, Feld: 3
doSomething mit Nummer 0 ist in Runde 1
doSomething mit Nummer 1 startet, Feld: 2
doSomething mit Nummer 1 ist in Runde 1
doSomething mit Nummer 2 startet, Feld: 1
doSomething mit Nummer 2 ist in Runde 1
doSomething mit Nummer 3 startet, Feld: 0
doSomething mit Nummer 3 endet
doSomething mit Nummer 2 ist in Runde 2
doSomething mit Nummer 4 startet, Feld: 0
doSomething mit Nummer 4 endet
doSomething mit Nummer 2 ist in Runde 3
doSomething mit Nummer 5 startet, Feld: 0
doSomething mit Nummer 5 endet
doSomething mit Nummer 2 ist in Runde 4
doSomething mit Nummer 6 startet, Feld: 0
doSomething mit Nummer 6 endet
doSomething mit Nummer 2 ist in Runde 5
doSomething mit Nummer 7 startet, Feld: 0
doSomething mit Nummer 7 endet
doSomething mit Nummer 2 ist in Runde 6
...
doSomething mit Nummer 2 ist in Runde 5689045987
...
doSomething mit Nummer 2 ist in Runde 5689045987589765996765498769676948769854793493874484378347
manche doSomething werden beendet, andere laufen ewig, durch verschachtelte Methodenaufrufe sind immer mehrere gleichzeitig aktiv
 

eRaaaa

Top Contributor
Lasse doch mal den Gedönst aus der 2. Methode weg...
Java:
    public static void main(String[] args) {
	doSomething(new int[] { 1, 2, 3 });
    }

    public static void doSomething(int[] feld) {
	while (feld.length > 0)
	    doSomethingOther(feld);
    }

    public static void doSomethingOther(int[] feld) {
	System.out.println("foo");
    }

auch das endet in einer Endlosschleife...wirds jetzt klarer?
 

Razen

Mitglied
rofl, also wenn ich mich dann richtig verstanden habe hab ich gedacht die while schleife endet wenn die methode zum ersten mal aufgerufen wird - was allerdings nicht der fall ist, die wird ja ewig wiederholt und es ändert sich nix an der länge - rofl...

Also Leute Ihr seit echt Spitze, vielen Dank für die Hilfe!!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
noah1407 endlosschleife Java Basics - Anfänger-Themen 7
G Endlosschleife keine Rückgabe Java Basics - Anfänger-Themen 36
sserio Endlosschleife ja nein? Java Basics - Anfänger-Themen 13
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
O Endlosschleife abbrechen Java Basics - Anfänger-Themen 10
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
T Erste Schritte Endlosschleife & wozu braucht man /* und */ Java Basics - Anfänger-Themen 19
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
S Endlosschleife - Warum? Java Basics - Anfänger-Themen 1
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Collatzfolge endlosschleife. Java Basics - Anfänger-Themen 4
D Array in Endlosschleife überschreibt vorherige Werte Java Basics - Anfänger-Themen 4
E Eulersche Zahl berechnen, Endlosschleife Java Basics - Anfänger-Themen 2
N Endlosschleife... Warum? Java Basics - Anfänger-Themen 12
P Kapselung Problem - Endlosschleife Java Basics - Anfänger-Themen 10
M Endlosschleife bricht durch switch ab Java Basics - Anfänger-Themen 17
D Endlosschleife und ich komme nicht raus! Java Basics - Anfänger-Themen 8
N Erste Schritte Endlosschleife und Exception Java Basics - Anfänger-Themen 5
R Endlosschleife nach InputMismatchException Java Basics - Anfänger-Themen 2
S Endlosschleife? Java Basics - Anfänger-Themen 2
T Endlosschleife Java Basics - Anfänger-Themen 2
Z Endlosschleife Java Basics - Anfänger-Themen 6
T Endlosschleife Java Basics - Anfänger-Themen 12
H Wieso ist das eine Endlosschleife? Java Basics - Anfänger-Themen 8
StupidAttack Endlosschleife, Sockets Java Basics - Anfänger-Themen 2
C ungewollte Abbrüche in einer Endlosschleife Java Basics - Anfänger-Themen 6
E komische endlosschleife Java Basics - Anfänger-Themen 6
7 Endlosschleife pausieren Java Basics - Anfänger-Themen 11
F .readLine() erzeugt endlosschleife Java Basics - Anfänger-Themen 4
R Wieso hänge ich hier in einer Endlosschleife (vermute ich zumindest)? Java Basics - Anfänger-Themen 2
F Falscheingabe abfangen - Endlosschleife Java Basics - Anfänger-Themen 5
W Fakultät, warum Endlosschleife? Java Basics - Anfänger-Themen 15
S JTable Endlosschleife Java Basics - Anfänger-Themen 5
J Aus endlosschleife kommen Java Basics - Anfänger-Themen 5
R Endlosschleife verhindert das Schließen des Fensters Java Basics - Anfänger-Themen 10
Povlsen84 Endlosschleife Java Basics - Anfänger-Themen 5
V Bubble Sort endet in Endlosschleife Java Basics - Anfänger-Themen 4
Antoras Endlosschleife Java Basics - Anfänger-Themen 8
J Wartezustand in Endlosschleife - bessere Alternativen Java Basics - Anfänger-Themen 20
H Problem beim Einlesen einer Datei (Endlosschleife ?) Java Basics - Anfänger-Themen 3
N Endlosschleife? Java Basics - Anfänger-Themen 3
V mehrere Threads starten + Endlosschleife Java Basics - Anfänger-Themen 3
I Hilfe wer findet mein Fehler in bei der Endlosschleife Java Basics - Anfänger-Themen 7
G Sound/Endlosschleife/Abbruchproblem Java Basics - Anfänger-Themen 3
G HappyNumbers - Endlosschleife Java Basics - Anfänger-Themen 11
0 Endlosschleife beim Integer Array mischen? Java Basics - Anfänger-Themen 3
M OutputStream funktioniert nur in Endlosschleife ? Java Basics - Anfänger-Themen 4
G Endlosschleife, aber warum? Java Basics - Anfänger-Themen 12
G Endlosschleife beenden Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben