2017-12-20 15 views
1

私はJavaを使用しています。私のコードのこの部分は、数字、バックスペース、および削除のみを許可するテキストフィールドに年齢を入力するためのものです。最初の文字であれば0を受け入れないようにコードにどのように伝えることができますか?java。テキストフィールドの最初の入力として0を受け付けません。

ありがとうございます。ここで

はコードです:

private void tfAgeKeyTyped(java.awt.event.KeyEvent evt) {        

    char c = evt.getKeyChar(); 

    if(!(Character.isDigit(c)) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)){ 
     evt.consume(); 
    } 
} 
+2

フォームを検証する... if(yourString.charAt(0)== '0')DONT LET EM! –

答えて

1

さてあなたは自分の入力した文字は、現在の入力が空のときc == '0'を使用して、あなたの条件に0と等しくないかどうかを確認する必要があります。

if((this.currentInput.isEmpty() && (!Character.isDigit(c) || c == '0')) || !(Character.isDigit(c)) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)){ 
    evt.consume(); 
} 
+0

あなたはほぼそこにいますが、あなたの条件では、ガベージ文字を最初の文字として入力することができます。すべての文字は数字でなければなりません。言い換えれば、入力文字列は数字ですが、0から始める必要はありません。 – DodgyCodeException

+0

@DodgyCodeExceptionよく指摘されています。ありがとう、私は答えを編集しました。 –

+0

2番目以降の文字も数字でなければなりません。 – DodgyCodeException

1
private void tfAgeKeyTyped(final java.awt.event.KeyEvent evt) {        

    final char c = evt.getKeyChar(); 

    // You need access to the current input to known if you are on the 
    // first character or not. 
    // Here I assume it exists as a private member variable. 
    final boolean isFirstChar = this.currentInput.isEmpty(); 

    final boolean isValidEvent = (Character.isDigit(c) && !(isFirstChar && c == '0')) || 
     (c == KeyEvent.VK_BACK_SPACE) || 
     (c == KeyEvent.VK_DELETE); 

    if (isValidEvent) { 
     evt.consume(); 
    } 
} 
関連する問題