2016-10-18 59 views
0

我正在通過一個Udemy課程,我們正在構建一個基本的「更高或更低」的應用程序。我的應用程序基本上可以工作,但無論我多次摧毀並重新啓動活動,它所選擇的隨機數字總是相同。類變量隨機數...總是一樣的嗎? Android系統。

MainActivity.java

//mad import statements here 

public class MainActivity extends AppCompatActivity { 

    int correctNumber; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     int correctNumber = generateNum(); 

    } 

    protected int generateNum(){ 
     Random rand = new Random(); 

     int randNum = rand.nextInt(100); 

     return randNum; 
    } 

    protected void numberEval(View view) { 

     EditText enteredNumber = (EditText) findViewById(R.id.numberEntry); 
     String numberString = enteredNumber.getText().toString(); 
     Button pressMe = (Button) findViewById(R.id.button); 



       int numToEval = Integer.parseInt(numberString); 
       String result; 
       TextView showWinLose = (TextView) findViewById(R.id.winLoseText); 

       if (numToEval > correctNumber) { 
        result = "Too high!"; 
       } else if (numToEval < correctNumber) { 
        result = "Too Low!"; 
       }else { 
        result = "You guessed it!"; 
       } 

       showWinLose.setText(result); 

    } 

} 

超級超級基本的,是嗎?最初,我的numberEval()方法調用generateNum(),但後來我意識到它正在生成一個新的數字,以便每次按下按鈕時進行猜測。所以我把它設定在這裏,onCreate()只生成correctNumber一次,correctNumber現在是一個類變量。現在,它不會爲每個按鈕點擊生成一個新號碼,但它似乎根本不會生成新號碼。無論我何時啓動,關閉,重新啓動等應用程序,它都會停留在0。

我該如何解決這個問題?提前致謝。

+0

因爲您從未將'correctNumber'設置爲任何值。請注意,這裏有兩個變量,稱爲'correctNumber';其中一個被使用但從未設置(所以它默認爲0),另一個被設置但從未使用(除了設置它) – immibis

回答

0
public class MainActivity extends AppCompatActivity { 

    int correctNumber; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     int correctNumber = generateNum(); 
    } 

// ... 
} 

onCreate()的最後一行聲明瞭一個名爲correctNumber一個本地變量。這隱藏了具有相同名稱的班級字段,並且僅在onCreate()內可用。要解決此問題,請從此行中刪除int,以便您改爲使用類字段。