Java - 检查int是否为空

时间:2016-01-10 12:16:36

标签: java android-studio

我试图在android studio中对int进行字段验证。该字段的代码如下;

public class Register extends ActionBarActivity implements View.OnClickListener {

    EditText etName, etAge, etUsername, etPassword;
    Button bRegister;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        etName = (EditText) findViewById(R.id.etName);
        etAge = (EditText) findViewById(R.id.etAge);
        etUsername = (EditText) findViewById(R.id.etUsername);
        etPassword = (EditText) findViewById(R.id.etPassword);
        bRegister = (Button) findViewById(R.id.bRegister);

        bRegister.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bRegister:
                String name = etName.getText().toString();
                String username = etUsername.getText().toString();
                String password = etPassword.getText().toString();
                String ageText = etAge.getText().toString();
                if(! TextUtils.isEmpty(ageText)) {
                    int age = Integer.parseInt(ageText);
                }

                if(name.length()==0)
                {
                    etName.requestFocus();
                    etName.setError("Please don't leave the name field empty.");
                }else if(username.length()==0)
                {
                    etUsername.requestFocus();
                    etUsername.setError("Please don't leave the username field empty.");
                }else if(password.length()==0)
                {
                    etPassword.requestFocus();
                    etPassword.setError("Please don't leave the password field empty.");
                }/*else if(age == null)
                {
                    etAge.requestFocus();
                    etAge.setError("Please don't leave the age field empty.");
                }*/
                else if(!name.matches("[a-zA-Z]"))
                {
                    etName.requestFocus();
                    etName.setError("Please only use alphabetic characters");
                }else{
                    User user = new User(name, age, username, password);
                    registerUser(user);
                }


                break;
        }
    }

    private void registerUser(User user) {
        ServerRequest serverRequest = new ServerRequest(this);
        serverRequest.storeUserDataInBackground(user, new GetUserCallback() {
            @Override
            public void done(User returnedUser) {
                Intent loginIntent = new Intent(Register.this, Login.class);
                startActivity(loginIntent);
            }
        });
    }
}

但是我无法验证int age,它会给我这个错误;

  

java.lang.NumberFormatException:无效的int:""

用户类

public class User {
    String name, username, password;
    int age;

    public User(String name, int age, String username, String password) {
        this.name = name;
        this.age = age;
        this.username = username;
        this.password = password;
    }

2 个答案:

答案 0 :(得分:4)

试试这个:

String ageText = etAge.getText().toString();
int age = 0;

if(! TextUtils.isEmpty(ageText)) // If EditText is not empty
    age = Integer.parseInt(ageText); // parse its content to integer

// Continue validation...

而不是

int age = Integer.parseInt(etAge.getText().toString());

答案 1 :(得分:0)

我相信你正在寻找这样的东西:

String ageString = "25"; //age will be null if it is empty or not a number
Integer age = null;
try {
    age = Integer.parseInt(ageString);
} catch (NumberFormatException e) {}

if (age == null) {
    //enter age
}