应用程序崩溃从空EditText解析int

时间:2018-02-03 21:06:15

标签: java android

我将应用名称设为更高或更低的数字。一切都很好,除了 当我添加一个数字。如果编辑文本字段为空,并且我没有在数字编辑文本视图中输入任何数值,那么我按下应用程序崩溃的按钮。

public void guessIt (View view) {
    EditText editText1 = (EditText) findViewById(R.id.editText1);
    /* actually guessIt is the function of the button which will
    executed upon clicking to the button till now we are
    making another method which does not exist before
    in this method we will do the following
     */
    int guessItInt = Integer.parseInt (editText1.getText().toString());
    /* this int guessItInt is a code to convert string to int

     */
    if(guessItInt > randomNumber) {
       makeToast("Lower");
    } else if (guessItInt < randomNumber){
      makeToast("Higher");
    } else {
      makeToast("You win");
        Random rand = new Random();
        randomNumber = rand.nextInt(20) +1;
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Random rand = new Random();
    randomNumber = rand.nextInt(20) +1;
    //This nadomnumber is a formula to generate random number
    //but we will still need another method to convert string to int
}

3 个答案:

答案 0 :(得分:0)

您应该区分编辑字段中的空内容和非空内容(最好只允许使用数字)。

如果编辑字段为空,并且在代码中按下按钮

int guessItInt = Integer.parseInt (editText1.getText().toString());

已执行。当editText1.getText()返回空String时,Integer.parseInt方法会抛出NumberFormatException。我认为这不会在您的代码中处理,因此会造成麻烦。

答案 1 :(得分:0)

query {
  me {
    starredPosts {
      id
    }
  }
}

如果editText1字段为空,则您将空字符串传递给parseInt。这将导致异常,因为该字符串不包含可解析整数的表示。您应该将此行放在try-catch块中,并处理文本不表示整数的情况。

答案 2 :(得分:-1)

转到您的xml文件,好像您错过了拼写您的方法名称。按钮属性中的android:onClick=guessIt。因为如果你的应用程序可以运行并且当你按下按钮时它会崩溃,那么它必须是你按钮的android:onClick属性。