Frage von Daniel2193, 14

(Java) while schleife funktioniert nicht!?

Hey Leute wollte mal Fragen was an meiner while schleife falsch ist:

package me.Daniel2193.IngameGui;

import me.Daniel2193.main.AufnahmeClient_by_Daniel2193; import me.Daniel2193.main.SC; import me.Daniel2193.module.Addon; import me.Daniel2193.tool.Pos; import me.Daniel2193.tool.Time; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiIngame; import net.minecraft.client.gui.ScaledResolution;

public class GuiIngameAddons extends GuiIngame{

private Minecraft mc = Minecraft.getMinecraft();
private boolean pos = true;
int g = 1;

public GuiIngameAddons(Minecraft mcIn) {
    super(mcIn);
    
}

public void func_175180_a(float p_175180_1_){
    super.func_175180_a(p_175180_1_);
    
    ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
    
    while(true)
    {
    SC.fr.drawString("X: " + Pos.Xpos, 5, 1, 0xfffff);
    SC.fr.drawString("Y: " + Pos.Ypos, 5, 10, 0xfffff);
    SC.fr.drawString("Z: " + Pos.Zpos, 5, 19, 0xfffff);
    SC.fr.drawString("Uhrzeit: " + Time.uhrzeit, 5, 28, 0xfffff);
    }
    int i = 0;          **  //<- Das Symikolon ist der Error**
    
    (Addon a: AufnahmeClient_by_Daniel2193.theClient.guiManager.activeGuis){
        a.onRender();
        
        
        
        if(a.getState()){
            int width = sr.getScaledWidth() - SC.fr.getStringWidth(a.getName()) - 2;
            int height = (10 * i);
            SC.fr.drawString(a.getName(), width, height, 0xff0000);
            i++;
        }
    }
}

}

Beim Fehler steht : Syntax error on token ";", for expected after this token

PS: Danke schon mal im vorraus

Antwort
von PWolff, 12

Nach dem Body der while-Schleife fehlt das Semikolon. Also vor der Zeile, wo der Fehler bemerkt wird.

Tipp: Es kommt regelmäßig vor, dass ein Fehler sich erst später bemerkbar macht - wenn man den Fehler nicht sofort sieht, lohnt es sich, sich auch mal die Zeile davor anzusehen.

(Aber wozu folgt nach der Endlosschleife überhaupt noch Code?)

Antwort
von Daniel2193, 2

Danke für eure vielen Antworten!!! Mein Fehler war das die While Schleife in der Falschen Klasse war. In der While schleife findet ein Postionsdisplay (Es wird meine Position angezeigt) statt. Ich hab dann bemerkt das ich nicht das display in eine Schleife setzen muss sondern die Positionsabfrage (in einer anderen Klasse), denn sonst würde da nur die Position beim Laden der Welt stehen.

Und mein "sonderbares Programm" ist ein erweiterter Minecraft Client.

Danke nochmal an alle die mir helfen konnten.

Antwort
von Smexah, 5

nimm mal das:

(Addon a: AufnahmeClient_by_Daniel2193.theClient.guiManager.activeGuis){
a.onRender();



if(a.getState()){
int width = sr.getScaledWidth() - SC.fr.getStringWidth(a.getName()) - 2;
int height = (10 * i);
SC.fr.drawString(a.getName(), width, height, 0xff0000);
i++;
}
}

raus.. mich macht die Klammer "(" am anfang nervös

Kommentar von Smexah ,

Das ist ja auch ein iein Framework denk ich mal

Antwort
von SergeantPinpack, 8

Steht doch in der Fehlermeldung. Das "for" in deiner for-Schleife fehlt.

Kommentar von Daniel2193 ,

Wo muss das "for" hin

Kommentar von Smexah ,

das is ne while.. da is nix mit for

    int i=0;

        while(i<10){

            System.out.println(i);

            i++;

        }

zb Funzt

Kommentar von Daniel2193 ,

Danke funzt jz

Kommentar von SergeantPinpack ,

Das steht auch da (der Fehler ist hinter dem Semikolon!)

Aber gut:

for (Addon a: AufnahmeClient_by_Daniel2193.theClient.guiManager.activeGuis){
Kommentar von SergeantPinpack ,

Weiterhin ist deine while-Schleife eine Endlos-Schleife. Alles hinter der Schleife ist "dead code". Sonderbares Programm hast du da geschrieben.

Kommentar von Smexah ,

Da hab ich auch schon gehangen, der muss bei Prüfen schon auf den Fehler stoßen, sonst würde er die Zeile, die den Fehler hat,  ja nie ausführen ...

Antwort
von xNeco, 8

deine While-Schleife sollte von der Form so aussehen:

while (int i = 0; i <= 10; i++){

dann deine anweisung mit anschließendem i++;

}

Du hast die Schleifenvariable nach und außerhalb der Schleife deklariert. Da du in der Schleife nichts hast, was den boolean "true" im "while(true)" verändert, hast du eine endlosschleife. while(true) bedeutet, dass du folgende Anweisung solange durchgeführt wird, bis "true" zu "false" verändert wird. Dies ist jedoch nicht der Fall.

Kommentar von unsignedInt ,

Falsch. Du vermischst For- und While-Schleifen. Und warum inkrementierst du "i" nochmals nach dem inkrementieren in dem Falschen Schleifenkopf? 

While erwartet einen Boolean, for erwartet eine Definition, einen Boolean und eine Anweisung.

So müsste das aussehen:

for(int i = 0; i <= 10; i++) {
    //Anweisung
}

Oder: 

int i = 0;

while(i <= 10) {
    //Anweisung mit anschließendem i++;
};
Kommentar von xNeco ,

OMG ich habs gerade gesehen. Trotzdem bleibt's bei dem fehler mit der initalisierung und deklaration der Variable i und deren erhöhen innerhalb der schleife

Keine passende Antwort gefunden?

Fragen Sie die Community