我目前正在使用 Android Studio 參加 Java 在線課程。作為課程的一部分,我們進行了構建更高或更低數字猜謎游戲的練習。我撰寫的初始代碼作業得很好(盡管有點羅嗦,但我仍在學習),它生成了一個亂數,并且在所有正確的訊息傳遞下一切正常。這是作業代碼。
import java.util.Random;
public class MainActivity extends AppCompatActivity {
Random ran = new Random();
int gameStart = 1 (int) (Math.random() * (30));
public void buttonClick(View view) {
EditText number = (EditText) findViewById(R.id.number);
Button button = (Button) findViewById(R.id.button);
int num = Integer.parseInt(number.getText().toString());
if (num == gameStart) {
Toast.makeText(this, "Correct!", Toast.LENGTH_SHORT).show();
} else if (num > gameStart) {
Toast.makeText(this, "Lower", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Higher", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
但是,隨后講師引入了額外的代碼,如果答案是正確的,則通過使 Random 成為方法并將其添加到初始 if 陳述句中,使用新數字重新啟動游戲。在視頻中它起作用了,但是當我添加它并編譯時,隨機生成的唯一數字是 0。我已經嘗試了一切,但看在上帝的份上,它無法正常作業。有人可以看看下面的更改并找出可能導致此問題的原因嗎?需要修改什么?
public class MainActivity extends AppCompatActivity {
int gameStart;
public void gameRestart() {
Random ran = new Random();
int gameStart = 1 (int) (Math.random() * (30));
}
public void buttonClick(View view) {
EditText number = (EditText) findViewById(R.id.number);
Button button = (Button) findViewById(R.id.button);
int num = Integer.parseInt(number.getText().toString());
if (num == gameStart) {
Toast.makeText(this, "Correct!", Toast.LENGTH_SHORT).show();
gameRestart();
}
uj5u.com熱心網友回復:
int gameStart;
public void gameRestart() {
Random ran = new Random();
int gameStart = 1 (int) (Math.random() * (30));
}
你永遠不會改變實體變數 gameStart 的值,所以它保持默認值,即 0。你在建構式中創建了一個區域變數 gameStart,之后不再使用。
將您的代碼更改為此設定實體變數:
int gameStart;
public void gameRestart() {
Random ran = new Random();
gameStart = 1 (int) (Math.random() * (30));
}
編輯:正如@AndyTurner 所說:您也沒有使用 Random 類的運行實體,因此您也可以洗掉該變數。
uj5u.com熱心網友回復:
public void gameRestart() {
Random ran = new Random();
int gameStart = 1 (int) (Math.random() * (30));
}
在這里,我假設您想將隨機值存盤在名為gameStart. 情況并非如此,因為您在方法中重新定義了具有相同編號的區域變數。您只需洗掉int變數之前的(并洗掉該ran行,因為未使用)
public void gameRestart() {
gameStart = 1 (int) (Math.random() * (30));
}
uj5u.com熱心網友回復:
你可以試試這個;
final int random = new Random().nextInt(50) 30;
// it will generate random number between 30 & 80
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/407454.html
標籤:
