簡體   English   中英

Java-檢查int是否為空

[英]Java - Checking if int is empty

我正在嘗試對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年齡,它使我犯了這個錯誤。

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;
    }

嘗試這個:

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());

我相信您正在尋找這樣的東西:

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM