Creating a Product Code Validator in Java

Problem:

Write a program that asks the user to enter a product code starting with the form of: NNNNL, where N denotes a number and L a letter. Keep asking the user for a product number until the user enters "XXX". If N > 2000 and L = B, the code is blacklisted and considered as banned.

The main point of this product validator is to be able to handle exceptions in a robust manner. Thus, you are expected to handle two exceptions manually: IndexOutOfBoundsException and NumberFormatException.

At the end of the program, print the total number of attempts, valid codes and banned codes.


Output:

Enter a product code (XXX to quit):
1900G
Enter a product code (XXX to quit):
2500B
Enter a product code (XXX to quit):
1000R
Enter a product code (XXX to quit):
190G
Code of improper length.
Enter a product code (XXX to quit):
190RG
Region is not numeric.
Enter a product code (XXX to quit):
XXX
Total # attempts: 5
# valid codes: 3
# banned codes: 1


Solution:

import java.util.Scanner;
 public class ProductCodes {
     public static void main(String[] args)
     {    
         String code;
         Scanner scan = new Scanner(System.in);
         char city;
         int region, valid = 0, banned = 0,total = 0;
          
         System.out.println("Enter a product code (XXX to quit): ");
         code = scan.nextLine();
          
         while (!code.equals("XXX"))
         {
         try {
             total++;
             city = code.charAt(4);
             region = Integer.parseInt(code.substring(0,4));
             valid++;
             if (city == 'B' && region >= 2000)
                 banned++;
         } catch (StringIndexOutOfBoundsException e) {
             System.out.println("Code of improper length.");
         } catch (NumberFormatException e ) {
             System.out.println("Region is not numeric.");
         } finally {
              
         }
         System.out.println("Enter a product code (XXX to quit): ");
         code = scan.nextLine();
     }
         System.out.println("Total # attempts: " + total);
         System.out.println(" # valid codes: " + valid);
         System.out.println(" # banned codes: " + banned);
     }        
 }

No comments:

Post a Comment