Java Newbie - Boolean Problem

  • Hallo Java Experten!

    Ich brauche euere Hilfe, da ich noch Anfänger bin und mich nicht "g'scheit" auskenne, bei der boolean Funktion.

    Ich brauche eine Boolean, die true ist, wenn eine von zwei Bedingungen erfüllt ist.

    Folgender Code funktioniert nicht:

    Code
    boolean validvariable = ( variable ==1 || variable == 0);
    
    
        if (validvariable){
           *Hier steht, was er machen soll, wenn boolean = true*
           } 
        else
           *Hier steht, was er machen soll, wenn boolean = false*


    Die boolean soll true sein, wenn die Variable variable 1 oder 0 ist.

    Leider geht das Programm immer in den else Zweig.
    Was hab ich falsch gemacht??

    Danke für eure Hilfe! :shinner:

    P.S.: Ich hoffe ich hab das Problem nicht zu blöd beschrieben... :)

  • Die Variable 'variable' wird bereits vor der Boolean-Funktion gesetzt (genauer am Anfang des Programms) und ist integer, jedoch habe ich die Variable 'validvariable' nicht gesetzt (Ist das vl das Problem?).
    Wenn ja, wie setze ich diese Variable 'validvariable'?

    Code
    int variable;
    //...
    boolean validvariable = ( variable ==1 || variable ==0)
    //...
  • mit "int variable" deklarierst du nur die Variable, sie hat aber noch keinen Wert. Probier folgendes:

    Code
    int variable = 1;
    boolean validvariable = (variable==1 || variable==0);

    640K ought to be enough for anybody. :eek2:

  • Zitat


    mit "int variable" deklarierst du nur die Variable, sie hat aber noch keinen Wert.

    Doch, nämlich den Defaultwert, bei ints 0.

    Eine uninitialisierter primitiver Datentyp als lokale Variable -> das darf nicht compilieren.
    Also, entweder ist der verwendete Java-Compiler fehlerhaft oder die Behauptung daß das so wäre.

    BTW: Boolean versus boolean -> zwei verschiedene Dinge.

    BTW^2: Den Wert von "variable" unmittelbar vorm if auszugeben bzw anzusehen -> schlechte Idee ?


    Trading for a living [equities,futures,forex]

  • Eine uninitialisierter primitiver Datentyp als lokale Variable -> das darf nicht compilieren.


    War's nicht so, dass nur klassenweite Instanzen automatisch initialisiert werden? Ich merk mir das auch nie (bin kein aktiver Java-Programmierer)...

    Dipper dipper dii dipper dii dipper dii duuu

  • Zitat


    War's nicht so, dass nur klassenweite Instanzen automatisch initialisiert werden? Ich merk mir das auch nie (bin kein aktiver Java-Programmierer)...

    Weiß jetzt nicht genau, was Du mit klassenweiten Instanzen meinst ...
    Statics ?

    Die Regel ist jedenfalls ganz einfach: Instanzvariablen (egal ob static oder nicht) bekommen einen Defaultwert. (nämlich 0 für die numerischen dts, false für boolean, null für Referenzen)
    Lokale Variablen bekommen keinen Defaultwert; uninitialisierte lokale Variablen erlaubt der Compiler nicht.
    (Der einzige Unterschied von Statics und nicht Statics bzgl. Defaultwerte ist eigentlich der Zeitpunkt der Zuweisung.)


    Trading for a living [equities,futures,forex]

  • Um wieder auf das eigentliche Problem zurückzukommen:

    Ein Vergleich (mit "==") liefert bereits einen Wert vom Typ boolean, den brauchst du dann nur in "validvariable" speichern.

    Code
    int variable = 1;
    boolean validvariable = (variable==1 || variable==0);

    Also nicht so, sondern:

    Code
    boolean validvariable = (variable==1);
  • Major_Payne, hier ein Tip, den du dein ganzes Leben lang mit dir mitschleppen kannst: Ein kleines vollständiges Programm, oder allerzumindestens eine kleine vollständige Methode gehört zu einer anständigen Problembeschreibung dazu. Denn dann sehen die anderen wirklich, was dein Code tut, und müssen nicht raten, ob du irgendwas initialisiert hast oder nicht.

    Also wenn das Problem noch besteht: nimm dein Programm her, nimm alles raus, was nicht mit diesem einen Codestück zu tun hat, aber das Programm noch immer compilierbar und lauffähig ist, und poste das.

    (Und ignoriere den Rat von Leuten, die deine Spezifikation nicht gelesen haben.)

    *plantsch*

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!