所以我试图改变最小和最大猜测的值(实际猜测由随机数发生器做出),以便阻止程序猜两次相同的数字。
我有一个猜测的方法,但也尝试设置最低和最高的猜测,然后在再次使用该方法时更改
public static int takestab (int low, int high) {
int estimate;
estimate = (low + (int)(Math.random() * ((high - low) + low)));
if (estimate < number) {
lowestguess = estimate;
}
else if (estimate > number) {
highestguess = estimate;
}
return estimate;
}
另外,这些是我在方法范围之外的变量:
int lowestguess = 1;
int highestguess = 100;
因此,通过运行该方法,猜测可能为50,实际数字可能为60.如果是这种情况,那么“最低限额”将变为50,因此该函数无法猜测低于50。
当我以这种方式尝试时,cmd提示符说它无法找到匹配的符号。
有什么想法吗?
答案 0 :(得分:1)
问题是,lowestguess
是instance
变量,但您尝试通过static
方法进行访问。
选项强>
传递lowerGuess
示例:
public static int takestab(int low, int high, Integer Lowest)
这使您也可以通过引用来更改最低值。
非静态方法
将方法更改为public int takestab(int low, int high)
将LowestGuess更改为静态
使用此选项在多线程环境中应该小心。
查看:强>
最后,如果你是在像eclipse这样的IDE中进行编程,那么你会有错误突出显示,其中的错误变得更加明显。
答案 1 :(得分:0)
lowestguess
是一个实例变量,如果不创建实例则无法访问它。如果您想在static
方法中使用它,那么您要么创建一个类的实例,然后使用lowestguess
,或者如果它有意义,那么将lowestguess
转为static
不允许以non-static
方式使用static
成员的原因是,实例变量的内存初始化在创建对象时发生。并且可以在不创建类的实例的情况下调用static
方法。
答案 2 :(得分:0)
static
方法只能使用静态成员(当然还有本地变量)。您的会员lowestguess
&amp;因此,highestguess
应声明为static
。