2017-04-07 17 views
0

私はJavaの初心者です。なぜ文字列がブール値に変換されないのかわかりません。Java文字列をブール型エラーに変換できません

"if"行と "else if"行にエラーコードが特に表示されます。あなたは現在値MSystemOfMeasureへの割り当てですが、ifまたはelse if条件がboolean表現、NOT割り当てを期待しています。

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"); 
    } 

答えて

4

だから、あなたは以下に示すようにSystemOfMeasure.equals("M")のような文字列の比較のために(true/falseを返す).equals()メソッドを使用する必要があります。

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

、あなたは下のようなJavaの命名規則に従う必要があることを覚えておいてください変数名の場合は、systemOfMeasure

+0

を使用することもできましたありがとうございました! –

0

などです。コードに構文エラーがあります。 if-conditionは、ブール値またはブール値に評価される式である必要があります。

=はJavaの代入演算子ですが、==は条件演算子または関係演算子です。ですから、=の代わりに==を使うべきです。

文字列の等価性はもう少し複雑でRead StackOverflow answer hereなので、2つの文字列を比較するにはString.equals()を使用する必要があります。だから、正しいコードは次のようになります。

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

しかしSystemOfMeasureがintを言うのであれば、あなたは

if(SystemOfMeasure == 1) { 
//do this 
} 
関連する問題