亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單擊時正確生成整數

單擊時正確生成整數

慕碼人2483693 2023-02-23 14:45:00
關于調用函數時生成的整數的代碼,我遇到了問題 - 我的代碼是一個數學游戲,用戶可以用 1 到 12 的數字回答隨機算術問題,我可以做到,但代碼似乎正在生成在允許用戶回答上一個問題之前生成新的隨機值,這意味著用戶回答了屏幕上未顯示的下一個問題。我認為在我對特定行進行評論的代碼中對其進行了更好的描述。public class MainActivity extends AppCompatActivity {Random r = new Random();int points1 = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    int value1 = r.nextInt(12 - 1) + 1;             //1st randomized set of values    int value2 = r.nextInt(12 - 1) + 1;             // ^    TextView Number1 = findViewById(R.id.number1);    Number1.setText(""+value1);                            //assigns randomized values to TextViews    TextView Number2 = findViewById(R.id.number2);    Number2.setText(""+value2);                            // ^^}public void onSubmitCheck (View view) {    reset();                                               //When button Submit is clicked}       //^ ^ Issue starts here when we click "submit" - the code generates new random values before checking the old ones against the mathematical expression in line 50..        //..meaning the user is already answering to the SECOND question before even attempting the first one.public void reset(){    int value1 = r.nextInt(12 - 1) + 1;            //Assigns 2nd randomized values    int value2 = r.nextInt(12 - 1) + 1;            // ^        TextView Number1 = findViewById(R.id.number1);        Number1.setText("" + value1);        TextView Number2 = findViewById(R.id.number2);        Number2.setText("" + value2);    TextView Answer = findViewById(R.id.Answer);    TextView displayPoints = findViewById(R.id.points);    EditText Attempt = findViewById(R.id.Attempt);所以最后,我想要實現的是在用戶可以回答的創建 (onCreate) 上生成值,然后在用戶輸入和提交之后,應用程序應該生成新值并允許用戶再次回答。我并不期待為我完成完整的工作,而是可以引導我找到答案的想法,因為我真的很想學習和理解我的問題。我嘗試了不同的方法,但我想這只是我的經驗和知識阻礙了我找到解決方案——我是一個初學者和自學成才的人。
查看完整描述

2 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

使 value1 和 value2 成為全局值,并僅在將其與舊值進行比較后才重置這些值。也做了一些其他的重新安排。


這可能是您的代碼:


public class MainActivity extends AppCompatActivity {



Random r = new Random();

int points1 = 0;

int value1, value2;

TextView Number1;

TextView Number2;

TextView Answer;

TextView displayPoints;

EditText Attempt;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    Number1 = findViewById(R.id.number1);

    Number2 = findViewById(R.id.number2);

    Answer = findViewById(R.id.Answer);

    displayPoints = findViewById(R.id.points);

    Attempt = findViewById(R.id.Attempt);


    value1 = r.nextInt(12 - 1) + 1;             //1st randomized set of values

    value2 = r.nextInt(12 - 1) + 1;             // ^

    Number1.setText("" + value1);                            //assigns randomized values to textEdits

    Number2.setText("" + value2);                            // ^^


}


public void onSubmitCheck(View view) {

    reset();                                               //When button Submit is clicked


}       //^ ^ Issue starts here when we click "submit" - the code generates new random values before checking the old ones against the mathematical expression in line 50..

//..meaning the user is already answering to the SECOND question before even attempting the first one.


public void reset() {


    int userAnswer = Integer.parseInt(Attempt.getText().toString());    //compares inputted value to an answer from line 50

    if (userAnswer == value1 + value2) {                                    //LINE 50

        Answer.setText("Correct!");

        point();

        displayPoints.setText("" + points1);


    } else {

        Answer.setText("Wrong :( Answer was: " + (value1 + value2));

    }


    value1 = r.nextInt(12 - 1) + 1;            //Assigns 2nd randomized values

    value2 = r.nextInt(12 - 1) + 1;            // ^

    Number1.setText("" + value1);

    Number2.setText("" + value2);


查看完整回答
反對 回復 2023-02-23
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

static int points1 = 0; 


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    TextView Number1 = findViewById(R.id.number1);

    TextView Number2 = findViewById(R.id.number2);

    TextView Answer = findViewById(R.id.Answer);

    EditText Attempt = findViewById(R.id.Attempt);

    TextView displayPoints = findViewById(R.id.points);


    generateNumbers();


}


public void onSubmitCheck (View view) {

    checkResult();

    Attempt.clear();                                              


private void generateNumbers () {

    Random r = new Random();

    value1 = r.nextInt(12 - 1) + 1;

    value2 = r.nextInt(12 - 1) + 1;


    Number1.setText(""+value1);                   

    Number2.setText(""+value2);


}


void checkResult() {

    int userAnswer = Integer.parseInt(Attempt.getText().toString());   

    if (userAnswer == value1 + value2) {                 

        Answer.setText("Correct!");


        points1++;


        displayPoints.setText(""+ points1);


    } else {

        Answer.setText("Wrong :( Answer was: " + (value1 + value2));

    }

}

試試這個,從一開始這段代碼就可以工作。如果您使用另一個名為Next 的按鈕來生成下一個 Value ,這將是一個更好的選擇。它可以幫助您理解代碼。


查看完整回答
反對 回復 2023-02-23
  • 2 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號