[英]Changing a variable value inside a void method to be used outside in Java?
[英]Changing a variable outside the scope of a method in Java
因此,我試圖更改最小和最大猜測值(實際猜測由隨機數生成器進行),以阻止程序兩次猜測相同的數字。
我有一個可以猜測的方法,但也嘗試設置一個最低和最高的猜測,當再次使用該方法時,它會發生變化
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。如果是這種情況,則“ lowestguess”將變為50,以便函數不能猜測任何低於50的數字。
當我以這種方式嘗試時,cmd提示說它找不到匹配的符號。
有任何想法嗎?
問題在於, lowestguess
是一個instance
變量,但是您嘗試通過static
方法進行訪問。
選件
通過最低猜測
例:
public static int takestab(int low, int high, Integer Lowest)
通過引用 ,這還允許您更改“最低”。
非靜態方法
將方法更改為public int takestab(int low, int high)
將LowestGuess更改為靜態
使用此選項時,在多線程環境中應格外小心。
看到:
最后,如果您在eclipse之類的IDE中進行編程,則會突出顯示錯誤,從而使諸如此類的錯誤變得更加明顯。
lowestguess
是一個實例變量,如果不創建實例就無法訪問它。 如果要在static
方法中使用它,則可以創建類的實例,然后使用lowestguess
,或者如果有意義,則將lowestguess
設為static
。
不允許以static
方式使用non-static
成員的原因是,創建對象時會發生實例變量的內存初始化。 並且可以在不創建類實例的情況下調用static
方法。
static
方法只能使用靜態成員(當然也可以使用局部變量)。 因此, highestguess
您的成員的lowestguess
和highestguess
聲明為static
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.