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 位卡号(也long不会int在您的数字中保留前导零)。

于 2013-04-28T10:24:24.933 回答