如果语句对象布尔值不起作用

leo*_*eon 2 java oop boolean object

我正在尝试使用另一个类中的另一个对象来检查一个人的年龄,由于某种原因,areThe布尔值无论如何都返回 false。我实现的以下代码是_

  public class main {    
    public static void main(String[] args){    
      Obj object = new Obj();    
      object.areTheyOldEnough();

      if(object.areTheyOldEnough() == true){
          System.out.println("They are old enough!");
      }else{
          System.out.println("They are not old enough!");
      }
    }
}

public class Obj {
    private int age = 15;
    private boolean areThey;

    public boolean areTheyOldEnough() {
        if (age > 12) {
            boolean areThey = true;
        }
        return areThey;    
    } 
} 
Run Code Online (Sandbox Code Playgroud)

Gho*_*ica 5

您的问题称为阴影;这里:

最内层的声明:

if (age > 12) {
  boolean areThey = true;
Run Code Online (Sandbox Code Playgroud)

完全错了,应该是:

areThey = true;
Run Code Online (Sandbox Code Playgroud)

反而。关键是:您正在声明一个具有该名称的变量,并为其赋值true。但是当那个 if-block 是“left”时,这个变量就凭空消失了……返回的是你班级中字段 的值。并且那个仍然具有其初始默认值。areTheyobjfalse

除此之外:命名是您代码中的一个真正问题。使用 A) 符合 java 编码标准的名称;例如,类名以大写开头;B)意味着什么。

换句话说:名称Object没有任何意义(除了创建另一个与 java.lang.Object 类名称冲突的名称)。最好将其称为“testInstance”或类似的名称 - 如前所述:使用具有含义的名称。