2013-04-28 3 views
3

입니다. 신용 카드 번호의 사용자 입력을 읽으려고합니다. 그러나 나는 10 자리 숫자를 입력 한 후 입력 mistmatch 있어요. 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

, 그것은 자바의 int에 대한 제한입니다. 32 비트 숫자이기 때문에 최대 값이 2147483647 이상인 값을 허용하지 않습니다.

12 자리가 필요한 경우 대신 long을 사용하십시오. 상한선이 9223372036854775807 인 64 비트 숫자입니다.

문자열을 사용하여 읽기 및 저장 카드 번호에 대한 또 다른 수용 가능한 해결책이 될 수 있습니다 숫자 만 포함하도록 검증 : 심지어 앞의 0을 (어느 쪽도 longint가에서 맨 앞에 0을 유지하지 않을 것이다가 12 자리 카드 번호를 작동하여 번호).

+0

답장을 보내 주셔서 감사합니다. 미안하지만 나는 그것을 깨닫기 위해 많은 가치를 가지고 일할 기회가 없었습니다. – Wayne

관련 문제