为了账号安全,请及时绑定邮箱和手机立即绑定

在 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 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信