Erste Versuche mit "boolean"

Maurice16

Mitglied
Ich habe mir mal etwas geschrieben,
jedoch habe ich irgendwas flasch gemacht mit boolean.
Java:
import javax.swing.JOptionPane;

class Freizeit{
public static void main(String [] args){
  String ersteEingabe, zweiteEingabe, ausgabe;
  int zahl1;
  boolean Sonne;
  
  Sonne=JOptionPane.showInputDialog("Scheint die Sonne?true/false");
  zweiteEingabe=JOptionPane.showInputDialog("Wie viel Grad ist es draußen?");
  
  zahl1=Integer.parseInt(zweiteEingabe);
  ausgabe="";
  
  if (Sonne=true && zahl1>25){
   ausgabe=ausgabe+"Freibad";
  }
  if (Sonne=true && zahl1>=15 && zahl1<=25){
   ausgabe=ausgabe+"Wandern";
  }
  if (Sonne=true && zahl1<15){
   ausgabe=ausgabe+"Shopping";
  }
  if (Sonne=false && zahl1>20){
   ausgabe=ausgabe+"Spazierengehen";
  }
  else{
   ausgabe=ausgabe+"Abhängen";
  }
  JOptionPane.showMessageDialog(null,ausgabe);
  System.exit (0);
}
}
Er zeigt mir nen Fehler bei...
Java:
Sonne=JOptionPane.showInputDialog("Scheint die Sonne?true/false");
Womit könnte das zusammen hängen?

Danke
 
Die Methode "showInputDialog" gibt den String zurück, der eingegeben würde, keinen Boolean.
Ich würde das ganze so lösen:
Wenn du willst, dass man true oder false eintippen muss, dann mach das so:
Java:
String str=JOptionPane.showInputDialog("Scheint die Sonne?true/false");//Eingabe wird gespeichert
Sonne = Boolean.parseBoolean(str);//String wird in boolean umgewandelt
Hier ist der Nachteil, dass es zu einem Error kommt, wenn der User etwas anderes als true oder false eingibt.
Ich würde es so machen: Öffne einen Confirm Dialog, den man mit ja oder nein beantworten kann, und frag dann ab welche Option gewählt wurde.
Java:
int option = JOptionPane.showConfirmDialog(null,"Scheint die Sonne","Sonnenfrage",JOptionPane.YES_NO_OPTION);
        if(option==JOptionPane.OK_OPTION) // Ausgewählte Option "OK"?
            Sonne = true;
        else 
            Sonne=false;
 
Noch eine andere Sache die mir beim durchlesen aufgefallen ist. Wolfy wird das eigentliche Problem denke ich gelöst haben, aber du wirst sehr vermutlich auf ein weiteres stoßen:

Du hast bei denn if-Abfragen immer geschrieben if(sonne = true && ...) ...

Das "=" ist in Java der Zuweisungsoperator. Mit anderen Worten, selbst wenn es im if steht weist du damit dem boolen Sonne den wert "true" zu. Das gibt keinen Compilerfehler, da ja weiterhin vor dem && ein Boolean steht. Zum Vergleichen von primitiven Datentypen verwendet man als Operator "==". Dann bekommst du auch raus was du wolltest. Zum vergleichen von Objekten am besten immer die Methode equals verwenden, die hat jedes Objekt.

Ich hoffe das hilft dir weiter, auch wenn das nicht das war wonach du gefragt hast.
 
Und wenn man schon sich schon MiMi´s Vorschlag annimmt, dann sollte man auch gleich beachten Variablen eindeutig zu bennen. Sprich einen String immer mit "str" beginnen, Byte mit "b", Integer mit "int", Float mit "f", Double mit "d", Boolean mit "is". Außerdem neue Worte im Variablennamen groß anfangen.
Beispiel:
"isSonne", "intSehrLangeZahl", usw.

Nur als Tipp, da es lange Codes leichter lesbar macht ;)
 
Zurück