2017-04-07 2 views
0

konvertiert werden Ich bin ein Anfänger mit Java und ich kann nicht scheinen, herauszufinden, warum String nicht in boolean konvertieren.Java-Zeichenfolge kann nicht in booleschen Fehler

Der Fehlercode wird speziell in der Zeile "if" und in der Zeile "else if" angezeigt.

String Name, SystemOfMeasure; 
    Double Height, IdealWeight; 

    // Retrieve user data 
    Name = txtName.getText(); 
    SystemOfMeasure = txtSystemOfMeasure.getText(); 
    Height = Double.parseDouble(txtHeight.getText()); 

    if (SystemOfMeasure = "M") { 
     IdealWeight = Height * Height * 25; 
     lblDisplay.setText(Name + ("'s ideal weight is") + IdealWeight); 
    } else if (SystemOfMeasure = "I") { 
     IdealWeight = Height * Height * 25/703; 
     lblDisplay.setText(Name + ("'s ideal weight is") + IdealWeight); 
    } else { 
     lblDisplay.setText("Please enter M or I"); 
    } 

Antwort

4

Sie befinden sich den Wert M-SystemOfMeasure Zuordnung, aber if oder else if Bedingungen erwarten einen boolean Ausdruck, nicht eine Zuordnung.

So müssen Sie .equals() Methode verwenden, für String-Vergleiche wie SystemOfMeasure.equals("M") (die true/false zurückgibt), wie unten gezeigt:

if (SystemOfMeasure.equals("M")) { 
    //add your code 
} else if (SystemOfMeasure.equals("I") { 
    //add your code 
} else { 
    //add your code 
} 

Denken Sie auch daran, dass Sie die Java-Namensstandards wie untere folgen müssen Fall für Variablennamen wie systemOfMeasure

+0

Thank you so much! –

0

Der Code hat Syntaxfehler. Die if-Bedingung muss ein boolescher Wert oder ein Ausdruck sein, der einen booleschen Wert ergibt.

= ist der Zuweisungsoperator in Java, während == die Bedingung oder der relationale Operator ist. Also solltest du == statt = verwenden.

Gleichwohl, String Gleichheit ist ein bisschen komplexer Read StackOverflow answer here und so sollten Sie String.equals() verwenden, um zwei Zeichenfolgen zu vergleichen. So würde richtiger Code sein:

if (SystemOfMeasure.equals("M")) { 
    IdealWeight = Height * Height * 25; 
    lblDisplay.setText(Name + ("'s ideal weight is") + IdealWeight); 
} 

aber wenn SystemOfMeasure sagen sind ein int, könnten Sie verwendet haben

if(SystemOfMeasure == 1) { 
//do this 
} 
Verwandte Themen