2016-01-10 102 views
0

我試圖在android studio中爲int進行字段驗證。該字段的代碼如下:Java - 檢查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); 
      } 
     }); 
    } 
} 

但我不能得到整型驗證,它keps給我這個錯誤;

java.lang.NumberFormatException:無效INT: 「」

User類

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

回答

3

試試這個:

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

它讓這一行不行,因爲它需要噸有一個int;用戶用戶=新用戶(姓名,年齡,用戶名,密碼); –

+0

使用整數'age'變量,而不是**字符串**變量'ageText'。 'User'構造函數接受什麼類型的參數? –

+0

用USer類更新了OP。我正在使用int年齡變量,但它無法解析該符號。 –

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 
}