3

クレジットカード番号のユーザー入力を読み込もうとしています。しかし、10桁入力したら入力ミスマッチ。私のコードでは、10 桁未満であれば問題なく動作します。

 do{

    System.out.print("Please enter your creditcard number:");
    ccNum = scan4.nextInt();
    int length = String.valueOf(ccNum).length();
    if(length !=12)
    {
       ccNumInfo=false;
        System.out.println("Please enter a 12 digit card number");
    }
  }while(ccNumInfo!= true); 
4

1 に答える 1

5

これはスキャナの問題ではなく、Java の制限intです。32 ビットの数値であるため、最大値の を超える値は受け入れません2147483647

12 桁が必要な場合は、long代わりに を使用してください。上限が の 64 ビットの数値です9223372036854775807

文字列を使用して数字のみを含むように検証することは、カード番号を読み取って保存するための別の許容可能な解決策になる場合があります。これは、先頭にゼロがある 12 桁のカード番号でも機能します (番号の先頭のゼロは保持されませlongint)。

于 2013-04-28T10:24:24.933 に答える