Android 用户输入int-won';不能为空
我制作了一个代码,用户将值放在某个范围之间,我的代码为它们生成随机数。随机化工作正常,但当字段为空时,我的应用程序崩溃,我该如何修复它 randNum.javaAndroid 用户输入int-won';不能为空,android,validation,android-studio,input,Android,Validation,Android Studio,Input,我制作了一个代码,用户将值放在某个范围之间,我的代码为它们生成随机数。随机化工作正常,但当字段为空时,我的应用程序崩溃,我该如何修复它 randNum.java Button generateNum = findViewById(R.id.generate_number); generateNum.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
Button generateNum = findViewById(R.id.generate_number);
generateNum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText et = findViewById(R.id.fromNum);
String sTextFromET = et.getText().toString();
int fNum = Integer.valueOf(sTextFromET);
EditText et1 = findViewById(R.id.toNum);
String sTextFromET1 = et1.getText().toString();
int sNum = Integer.valueOf(sTextFromET1);
TextView ans = findViewById(R.id.ans);
// if(sNum == null || fNum == null){
//
// ans.setText(getString(R.string.enterNumError));
//
// }
// else
if(sNum < fNum){
ans.setText(getString(R.string.max_min_error));
}else {
final int random = new Random().nextInt((sNum - fNum) + 1) + fNum;
String ras = Integer.toString(random);
ans.setText(ras);
}
}
});
按钮generateNum=findviewbyd(R.id.generate\u编号);
GenerateEnum.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
EditText et=findViewById(R.id.fromNum);
字符串sTextFromET=et.getText().toString();
int fNum=整数.valueOf(sTextFromET);
EditText et1=findViewById(R.id.toNum);
字符串sTextFromET1=et1.getText().toString();
int sNum=整数.valueOf(sTextFromET1);
TextView ans=findViewById(R.id.ans);
//如果(sNum==null | | fNum==null){
//
//ans.setText(getString(R.string.enternumeror));
//
// }
//否则
如果(sNum
我尝试使用
null
,但它不起作用。您需要在单击按钮时首先进行验证。(用于检查用户是否未在任何编辑文本中输入任何内容或仅输入空格)
希望这能帮助您理解表单对空输入字段的验证
注:如果您还没有在xml文件中添加inputType属性,我建议您为EditText添加该属性,如:
android:inputType="number"
因此,如果用户输入任何字母或符号,您可以避免在
Integer.parseInt
处出现异常。您需要处理Integer.valueOf()函数引发的NumberFormatException
try {
EditText et = findViewById(R.id.fromNum);
String sTextFromET = et.getText().toString();
int fNum = Integer.valueOf(sTextFromET);
EditText et1 = findViewById(R.id.toNum);
String sTextFromET1 = et1.getText().toString();
int sNum = Integer.valueOf(sTextFromET1);
TextView ans = findViewById(R.id.ans);
if(sNum < fNum){
ans.setText(getString(R.string.max_min_error));
}else {
final int random = new Random().nextInt((sNum - fNum) + 1) + fNum;
String ras = Integer.toString(random);
ans.setText(ras);
}
}catch(NumberFormatException e){
Toast.makeText(this, "Invalid Input", Toast.LENGTH_SHORT).show();
}
试试看{
EditText et=findViewById(R.id.fromNum);
字符串sTextFromET=et.getText().toString();
int fNum=整数.valueOf(sTextFromET);
EditText et1=findViewById(R.id.toNum);
字符串sTextFromET1=et1.getText().toString();
int sNum=整数.valueOf(sTextFromET1);
TextView ans=findViewById(R.id.ans);
如果(sNum
我已经添加了android:inputType=“number”,我现在按照您的建议更改了代码。lenghth()无法解决发生的错误。请使用新代码更新您的问题,以便我可以查看一下。IMOTextUtils.isEmpty(strNum1)
比方法处理此类情况要好得多。是的,使用android:inputType=“number”
是一个好主意,因为它可以防止用户在文本输入中输入非数值。
try {
EditText et = findViewById(R.id.fromNum);
String sTextFromET = et.getText().toString();
int fNum = Integer.valueOf(sTextFromET);
EditText et1 = findViewById(R.id.toNum);
String sTextFromET1 = et1.getText().toString();
int sNum = Integer.valueOf(sTextFromET1);
TextView ans = findViewById(R.id.ans);
if(sNum < fNum){
ans.setText(getString(R.string.max_min_error));
}else {
final int random = new Random().nextInt((sNum - fNum) + 1) + fNum;
String ras = Integer.toString(random);
ans.setText(ras);
}
}catch(NumberFormatException e){
Toast.makeText(this, "Invalid Input", Toast.LENGTH_SHORT).show();
}