如果开关不工作

use*_*736 1 java if-statement

我试图制作一个控件,阻止用户进入超过30的房屋贷款的年度.

HomeLoan hLoan=new HomeLoan(name, custID, loanID);
System.out.println("You selected Home Loan");
System.out.println("Enter term: ");
term=input.nextInt();
boolean l=false;
boolean s = hLoan.termCorrect(term);
System.out.println(s);
if (s=true){
   System.out.println("Error: Maximum of 30 years");}
else {l=false;}
Run Code Online (Sandbox Code Playgroud)

它调用termCorrect()方法来确定该术语是否超过30,并返回true或false.当我运行它时,s的值对于我使用的输入是正确的,但它总是出于某种原因运行错误消息,而不管s.

任何帮助将不胜感激.

rge*_*man 11

您正在使用赋值运算符=:

if (s=true){
Run Code Online (Sandbox Code Playgroud)

==改为使用比较运算符:

if (s == true) {
Run Code Online (Sandbox Code Playgroud)

或者,因为它已经是一个boolean,使用s它自己:

if (s)
Run Code Online (Sandbox Code Playgroud)

最后一种形式是可取的.它简洁,操作员也没有机会与之混淆=.

  • +1,但也许强调`if(s)`比`if(s == true)`更可取. (7认同)

Mas*_*dul 5

if语句中的赋值运算符无效.改变

  if (s=true){// this invalid
Run Code Online (Sandbox Code Playgroud)

 if (s){
Run Code Online (Sandbox Code Playgroud)