2013-04-28 6 views
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); 

ответ

5

Это не проблема сканера, это ограничение на в Java int. Будучи 32-битным числом, он не принимает значения, превышающие максимальное значение 2147483647.

Если вам нужно иметь 12 цифр, вместо этого используйте long. Это 64-разрядное число с верхним пределом 9223372036854775807.

Использование строки и проверки его содержать только цифры могут быть еще одним приемлемым решением для чтения и хранения номеров карт: он работает даже для чисел 12 цифр карты, которые имеют ведущие нули (ни long, ни int бы сохранить ведущие нули в вашей номера).

+0

Спасибо за ваш ответ. Извините, у меня не было шанса работать с большим количеством значений, чтобы понять это. – Wayne

Смежные вопросы