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

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

在 onClickListener 中生成隨機值時應用程序崩潰

在 onClickListener 中生成隨機值時應用程序崩潰

Helenr 2023-06-04 10:31:20
當我沒有在 EditText 中輸入任何內容然后按下“猜測”按鈕時,我的應用程序不斷崩潰并且我似乎無法找到我的代碼的問題。public void generateRandomNos(){      Random rand = new Random();      randomNumber = rand.nextInt(20)+1;}btnGuess.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                int guessValue = Integer.parseInt(etNumber.getText().toString());                String message;                if(guessValue > randomNumber){                    message = "Lower !";                    etNumber.setText("");                }                else if (guessValue < randomNumber){                    message = "Higher !";                    etNumber.setText("");                }                else{                    message = "You got it right. GG ";                    etNumber.setText("");                    generateRandomNos();                }                Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show();            }});當框中沒有文本EditText和按下按鈕時,應用程序不應崩潰??赡苁鞘裁磫栴}呢?
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

正如您在問題中提到的那樣,當您未在編輯文本中輸入任何內容時會發生此錯誤。


所以首先,檢查是否edit text為空,然后執行所需的操作


btnGuess.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {



       if(!etNumber.getText.toString().equals("")) {           

         int guessValue =  Integer.parseInt(etNumber.getText().toString());


                String message;


                if(guessValue > randomNumber){

                    message = "Lower !";

                    etNumber.setText("");

                }

                else if (guessValue < randomNumber){

                    message = "Higher !";

                    etNumber.setText("");

                }

                else{

                    message = "You got it right. GG ";

                    etNumber.setText("");

                    generateRandomNos();

                }



        Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show();

            }

         } else {

           Toast.makeText(MainActivity.this,"EditText Is empty",Toast.LENGTH_SHORT).show();

         }

   });

注意:并確保您使用android:inputType="number"屬性來編輯文本,以便您只能獲得數字作為輸入


查看完整回答
反對 回復 2023-06-04
?
陪伴而非守候

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

您是否在 EditText 中輸入了除十進制數字以外的任何其他字符?


parseInt文檔說:


Parses the string argument as a signed decimal integer. 

The characters in the string must all be decimal digits, 

except that the first character may be an ASCII minus sign '-' ('\u002D') to 

indicate a negative value or an ASCII plus sign '+' ('\u002B') to indicate a 

positive value. The resulting integer value is returned, exactly as if the 

argument and the radix 10 were given as arguments to the 

parseInt(java.lang.String, int) method.

您可以使用 try/catch 語法來檢查這個


try {

    int value = Integer.parseInt(str);

} catch(NumberFormatException ex) {

    //Input is not a number

}



查看完整回答
反對 回復 2023-06-04
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

當然它會崩潰,因為您從未generateRandomNos()在 Click 事件之前分配此方法。所以你的應用程序不知道randomNumber事件觸發前的值是多少。您現在可以做的是在執行 btnGuess clicked 之前獲取值randomNumber。例如


btnGuess.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View view) {

                        generateRandomNos();  // i change this position

                    int guessValue = 

    Integer.parseInt(etNumber.getText().toString());

                    String message;


                    if(guessValue > randomNumber){

                        message = "Lower !";

                        etNumber.setText("");

                    }

                    else if (guessValue < randomNumber){

                        message = "Higher !";

                        etNumber.setText("");

                    }

                    else{

                        message = "You got it right. GG ";

                        etNumber.setText("");

                    }


查看完整回答
反對 回復 2023-06-04
  • 3 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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