mehere If Klausel

Status
Nicht offen für weitere Antworten.

abina

Mitglied
Hallo

ich bin Anfängerin in Java . ich versuche etwas, aber nur Fehlermeldungen. Könnt ihr mir helfen???

Kann man in If Klausen auch noch mal eine while klausen machen oder umgekehrt??

ich habe ein Syntax Fehler
 
G

Gelöschtes Mitglied 5909

Gast
Code:
if (bedingung) {
} else if (bedingung) {
} else if (bedingung) {
} 
// weitere else if's
else {

}
 

Yzebär

Bekanntes Mitglied
Ja man kann if in while verwenden und umgekehrt, dein Syntaxfehler besteht in einem fehlenden "if" nach dem else...
Code:
if(p < q){
    Motor.A.setPower(c - 1);
}else if(p > q){ // hier stand vorher nur ein else
    Motor.A.setPower(a + 1);
}
// hier könnte anstelle der Bedingung else if( p == q ) ein einfaches else stehen
Ein einzelnes "else" kann man an keine Bedingung knüpfen.
 

abina

Mitglied
hallo

Danke für die Hilfe.

Nun ich habe eine weitere Frage


ich habe while schleife , drin die If schleife gepackt.

Aber ich habe das Gefühl, der geht nicht in die in die IF schleife.

Den Wert , was in der If Schleife ist, wird nicht ausgeführt
was mache den Falsch???

vielen Dank
 
S

SlaterB

Gast
Code:
System.out.println("huhu, ich bin dein Programm und spreche auch mit dir");
System.out.println("ich bin grade vor der Schleife, p: "+p+" q: "+q);
while(p != q) {
         System.out.println("Beginn der Schleife, p: "+p+" q: "+q);

         Motor.A.setPower(3);
         Motor.C.setPower(3);
         Motor.A.forward();
         Motor.C.forward();
         Thread.sleep(3000);

         Motor.A.stop();
         Motor.C.stop();

         
          LCD.showNumber(S1.readRawValue()); robby.pause(2000);
          LCD.showNumber(S3.readRawValue()); robby.pause(2000);

         System.out.println("vor if, p: "+p+" q: "+q);
          if (p < q) {
              System.out.println("bin in if drin, Motor A");
               Motor.A.setPower(6);
            }else if (p > q){
               System.out.println("bin im ersten else drin, Motor C");
               Motor.C.setPower(6);
            } else {
               System.out.println("bin in keinem der beiden Motor-Fälle drin");
            }           
         System.out.println("nach if, p: "+p+" q: "+q);

      }

wird in der Schleife irgendwo p oder q verändert?
-> Gefahr einer Endlosschleife
 

abina

Mitglied
ya

p und q ist der Wert , für die Rotation

d.h. er fährt ein Stück. Ich bekomme ein Wert für p und q. unten wird p und q verglichen. Falls kleiner , soll ein der Wert für a erhöht werden.

Nach meiner Meinung PASSIERT ES NICHT.

dann fängt die Schleife wieder an. und es wird eine andere Wert für p und q gemessen.


So wie es gemacht habe, wird der WERT für setMotor nicht gelesen
 
S

SlaterB

Gast
> dann fängt die Schleife wieder an. und es wird eine andere Wert für p und q gemessen.

dein Code enthält keinen Befehl der p oder q verändert, welchen meinst du?
andere Klassen/ Objekte/ Operationen haben keine Möglichkeit, auf die lokalen Variablen p oder q zuzugreifen
 

abina

Mitglied
doch wenn das Programm hier ist
Code:
LCD.showNumber(S1.readRawValue()); robby.pause(2000); 
          LCD.showNumber(S3.readRawValue()); robby.pause(2000);

wird immer eine neue Wert gemessen.

ich weis auch nicht , welche schleife so am besten ist.

Any idee

danke
 
S

SlaterB

Gast
vielleicht wird da irgendwas gemessen, aber das ändert den Wert von p und q nicht?!
kann man wiederum mit System.out.println prüfen oder einer entsprechenden Ausgabe auf deinem LCD

was das Problem ist ist immer noch nicht klar,
so kann also niemand 'any idee' haben..
 

abina

Mitglied
na jetzt habe ich folgendes gemacht:


am Anfang gebe ich ein Wert vor. Er fährt. Dann wird ein anderes Wet gemessen.

dise Zeile macht er nicht. Und das versteh ich nicht
 
S

SlaterB

Gast
wie du meinst,
ich habe dir vorhin sogar schon dein Programm mit Ausgaben vollgepflastert,
das Programm SAGT dir dann an jeder Stelle was los ist
( System.out.println("vor if, p: "+p+" q: "+q); )

dann könntest du deine verständliche Verwunderung
> dise Zeile macht er nicht. Und das versteh ich nicht
umwandeln in
"ich weiß nicht warum p an dieser Stelle 4, also kleiner als q = 6 ist"
und vielleicht doch ein wenig weiterdenken

aber wenn du diese Hinweise kommentarlos ignorierst,
dann kann ich dir erstmal auch nicht weiterhelfen?
 

SnooP

Top Contributor
Ja... allgemeiner Tipp daher, immer wenn man denkt, dass da nicht in eine if-Bedingung (nicht Schleife!!!) reingegangen wird, einmal ne Ausgabe vor und in den Block der if-Bedingung reinpacken - dann kannst du sehen, warum bestimmte Werte dazu führen, dass halt irgendwas passiert oder nicht passiert ;)

übrigens sehr cool die Geschichte mit den Lego-Robotern - ist das für's Studium? Wenn ja, welche Uni? ;) ... bin neugierig, weil bei uns an der TU-Braunschweig das seit neuestem als Praktikum für die Erstis angeboten wird. Find ich klasse die Idee!
 

abina

Mitglied
vielen Dank

ich hatte es einfach übersehen. Doch jetzt kann ich püfen , wann er was ausgibt.

Eine einzige Frage noch :)

An dieser Stelle nehme ich von aktuellen Wert + 4.

Dann soll er den Wert ausgeben. Er gibt immer den alten Wert aus.

Code:
if (p < q) {

					Motor.A.setPower(a + 4);
					LCD.showNumber(a);
					robby.pause(2000);

oben habe ich gesagt.

int a = 3;
 
S

SlaterB

Gast
tja, da gibts zwei Möglichkeiten

Motor.A.setPower(a + 4);
LCD.showNumber(a + 4);

// a immer noch 3

--------

oder

a += 4; // a = a +4;
Motor.A.setPower(a);
LCD.showNumber(a);

// a == 7
 

abina

Mitglied
Hi

irgendwie habe ich nicht , dass was ich will mit meiner Schleife.
Mein Programm gibt 2 Werte int p und int q aus. (angenommen p=700 q =500 )


Er geht in 2 if else , aber nicht in den 3.


WIe kann ich 3 Überprüfungen machen in einer While Schleife.
 
S

SlaterB

Gast
sprich doch mal Deutsch..,
was ist "3.", was klappt nicht, welche Werte haben p & q,
wann soll was passieren

bei
p=700 q =500
wird
if (p - q < 15 || q < p) {
}
erfolgreich sein, dann q ist ja kleiner als p
 

abina

Mitglied
man ich bin ausläderin :(

Ja habe doch geschrieben.

wichtig ist , dass er 3 Sachen prüft wenn p = 700; q = 500;


aber er macht nicht in der if Schleife


hast du verstanden??

danke
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben