【发布时间】: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