我一生都无法弄清楚我做错了什么。我试图将用户输入限制为整数。所以当我使用以下代码时
int userNumber = Integer.parseInt(userGuess.getText().toString());
我的应用程序没有崩溃。
我想出了如何在java中做到这一点,http://www.browxy.com/SavedCode/48384 。我遇到的唯一问题是将这个概念移植到我的应用程序中。当我使用它时,Android Studio 无法识别 hasNextInt() 。
首先我使用findViewId方法来获取 View :
EditText userGuess = (EditText) findViewById(R.id.userGuess);
然后我尝试检查 userGuess.getText().toString(); 是否通过循环的方式是一个整数。正如我所说,android Studio 无法识别 hasNextInt();
在查看 stackOverflow 时,一位用户表示要避免使用期望来解决此问题。请帮忙!
最佳答案
您可以在EditText
上使用输入类型数字。
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number" />
我不确定用户是否仍然能够将非数字字符复制粘贴到此字段中。
http://developer.android.com/training/keyboard-input/style.html http://developer.android.com/guide/topics/ui/controls/text.html#Keyboard
<小时/>另一种检查方法是在用户输入内容之后(例如,如果他们仍然可以在字段中粘贴非数字,则仍然需要):
private boolean isDigit(String text) {
try {
Integer.parseInt(text);
return true;
} catch (NumberFormatException e) {
// log warning, track analytics if you want
}
return false;
}
我避免编写返回整数的方法,因为它会使用控制流异常。在这种情况下,我不确定该方法将返回什么数字。
关于java - Android白痴校对用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453564/