簡體   English   中英

在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方法進行訪問。

選件

  • 將lowerGuess作為非基本對象(對象)傳遞給方法。
  • 使用非靜態方法
  • 使最低猜想為靜態

通過最低猜測

例:

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您的成員的lowestguesshighestguess聲明為static

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM