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"屬性來編輯文本,以便您只能獲得數字作為輸入

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
}

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("");
}
添加回答
舉報