Validate an ISBN-10 number using Java

By Steve Claridge on 2014-09-23.

The Java method below validates an ISBN-10 number. It checks that the number is the correct length and validates the checksum using this formula - it accepts ISBNs with or without hyphens.

    public boolean validateIsbn10( String isbn )
    {
        if ( isbn == null )
        {
            return false;
        }         //remove any hyphens
        isbn = isbn.replaceAll( "-", "" );         //must be a 10 digit ISBN
        if ( isbn.length() != 10 )
        {
            return false;
        }         try
        {
            int tot = 0;
            for ( int i = 0; i < 9; i++ )
            {
                int digit = Integer.parseInt( isbn.substring( i, i + 1 ) );
                tot += ((10 - i) * digit);
            }             String checksum = Integer.toString( (11 - (tot % 11)) % 11 );
            if ( "10".equals( checksum ) )
            {
                checksum = "X";
            }             return checksum.equals( isbn.substring( 9 ) );
        }
        catch ( NumberFormatException nfe )
        {
            //to catch invalid ISBNs that have non-numeric characters in them
            return false;
        }
    }