【问题标题】:Random boolean is always false [closed]随机布尔值总是错误的[关闭]
【发布时间】:2023-03-31 23:25:01
【问题描述】:

每当我创建一个 goblin 对象并调用方法 isNice 时,它​​总是返回 false。但是当我执行 System.out.println(nice) 时,它会随机执行。

public class Goblin
{

    private boolean nice;
    private boolean isNice;


    public Goblin()
    {
        // initialise instance variables
          Random rand = new Random();
         boolean nice = rand.nextBoolean();

    }

    public boolean isNice()
    {

            return true;

        else 
            return false;
    }

}

【问题讨论】:

  • 首先,返回布尔值:isNice() { return isNice; }
  • 因为您没有将rand.nextBoolean() 的结果分配给nice,而是分配给一个局部变量。
  • 您设置的是局部变量而不是类属性。作为解决方案,请尝试this.nice = rand.nextBoolean();
  • isNice 可以简化为return nice;
  • 构造函数中的boolean nice 声明了一个遮蔽 字段 nice局部变量,所以您没有在任何地方设置该字段的值。见What are Shadow Variables in Java?

标签: java


【解决方案1】:
boolean nice = rand.nextBoolean();

正在声明和分配一个局部变量。您没有分配该字段,因此当您使用 getter 访问它时,它将始终具有其默认值 false

删除boolean

【讨论】:

  • 进一步解释:由于您没有将nice 分配给true-nice 永远不会等于true,因此方法isNice() 总是返回false。
猜你喜欢
  • 1970-01-01
  • 2013-10-01
  • 2012-01-15
  • 1970-01-01
  • 2016-08-14
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多