2017-04-07 28 views
0

我是一个初学java,我似乎无法弄清楚为什么字符串不会转换为布尔值。java字符串不能转换为布尔错误

错误代码特别出现在“if”行和“else if”行。

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

您目前分配值MSystemOfMeasure,但ifelse if条件想到boolean表达,而不是分配。

所以,你需要使用.equals()方法(它返回true/false)像SystemOfMeasure.equals("M")字符串比较,如下图所示:

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

另外,记住,你需要遵循Java命名等低级标准变量名称的情况如systemOfMeasure

+0

太谢谢你了! –

0

代码有语法错误。 if条件需要是一个布尔值或一个计算结果为布尔值的表达式。

=是Java中的赋值运算符,而==是条件性或关系运算符。所以你应该使用==而不是=。

话虽如此,字符串相等是一个更复杂的Read StackOverflow answer here,所以你应该使用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 
} 
相关问题