Java Methods problem

profileshrimmlydink
Lab04.zip

Lab04/pom.xml

4.0.0 com.mycompany Lab04 1.0-SNAPSHOT jar UTF-8 14 14

Lab04/Problem statement.PNG

Lab04/src/main/java/BillCalculator3.java

Lab04/src/main/java/BillCalculator3.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */





import  java . util . Scanner ;
import  java . text . DecimalFormat ;

/**
 *
 *  @author  Marion
 */
public   class   BillCalculator3   //methods are within the class, but outside the main method
{

     /**
     *  @param  args the command line arguments
     */
    
     //void method---> main method
     //other methods go outside this method
    
     public   static   void  main ( String []  args )   { //all the while loops stay in this method
        
        
         //constants and variables
        
        
         final   double  PACKAGE_A_COST  =   9.95 ;
         final   double  PACKAGE_B_COST  =   13.95 ;
         final   double  PACKAGE_C_COST  =   19.95 ;
         final   double  ERATH_DISCOUNT_RATE  =   .20 ;
         final   double  COMANCHE_DISCOUNT_RATE  =   .05 ;
         final   double  PARKER_DISCOUNT_RATE  =   .10 ;

         int  totalOfCustomers  =   0 ;
         double  totalOfDiscountAmount  =   0 ;
         double  totalOfTotalCharge  =   0 ;
        
         String  input ;
         String  zipCodeString ;
         char  zipCode ;
         String  countyName ;
         char  packageType ;
         double  hoursUsed ;
         double  baseCharge  =   0 ;
         double  additionalCharge  =   0 ;
         double  surcharge  =   0 ;
         double  discountRate  =   0 ;
         double  discountAmount  =   0 ;
        
         double  subtotalPackageA  =   0 ;
         double  subtotalPackageB  =   0 ;
         double  subtotalPackageC  =   0 ;
         double  totalChargePackageA  =   0 ;
         double  totalChargePackageB  =   0 ;
         double  totalChargePackageC  =   0 ;        
       
         double  savingsPackageB  =   0 ;
         double  savingsPackageC  =   0 ;
        
         double  averageDiscountAmount  =   0 ;
         double  averageTotalCharge  =   0 ;

         Scanner  keyboard  =   new   Scanner (   System . in  );
         DecimalFormat  currency  =   new   DecimalFormat (   "$,##0.00"   );
        
        
         System . out . print (   "Enter hours used: "   );
        hoursUsed  =  keyboard . nextDouble ();
        keyboard . nextLine ();
        
         //while loops from lab 03 sample solution 
        
         while (  hoursUsed  !=   - 1   )
         {
 
             while (  hoursUsed  <=   0   )
             {
                 System . out . print (   "Invalid hours used. Must be greater than zero. Try again: "   );
                hoursUsed  =  keyboard . nextDouble ();
                keyboard . nextLine ();                 
             }
            
             System . out . print (   "Enter zip code: "   );
            zipCodeString  =  keyboard . nextLine ();
            zipCode  =  zipCodeString . charAt ( 0 );
            

             while (  zipCode  <=   '0'   )
             {
                 System . out . print (   "Invalid zip code. First character must be greater than zero. Try again: "   );
                zipCodeString  =  keyboard . nextLine ();
                zipCode  =  zipCodeString . charAt ( 0 );                          
             }
            
             if (  zipCode  ==   '3'   )
                    surcharge  =   1.50 ;
                 else   if (  zipCode  ==   '5'   )
                    surcharge  =   1.75 ;
                 else   if   (  zipCode  ==   '8'   )
                    surcharge  =   1.95 ;
                 else
                    surcharge  =   0.0 ;
            
             System . out . print (   "Enter county: "   );
            countyName  =  keyboard . nextLine ();
            
             while (  countyName . equals ( "" )   )
             {
                 System . out . print (   "Invalid county. County is required. Try again: "   );
                countyName  =  keyboard . nextLine ();
             }             
            
            countyName  =  countyName . toUpperCase ();

             if (  countyName . equals (   "ERATH"   )   )
                discountRate  =  ERATH_DISCOUNT_RATE ;
             else   if (  countyName . equals (   "COMANCHE"   )   )
                discountRate  =  COMANCHE_DISCOUNT_RATE ;
             else   if (  countyName . equals (   "PARKER"   )   )
                discountRate  =  PARKER_DISCOUNT_RATE ;
             else
                discountRate  =   0.0 ;
                            
             System . out . print (   "Enter package type: "   );
            input  =  keyboard . nextLine ();
            packageType  =  input . charAt ( 0 );
            
             while (  packageType  !=   'A'   &&  packageType  !=   'a'   &&  packageType  !=   'B'   &&  packageType  !=   'b'
                     &&  packageType  !=   'C'   &&  packageType  !=   'c'   )
             {
                 System . out . print (   "Invalid package type. Must be A, B, or C. Try again: "   );
                input  =  keyboard . nextLine ();
                packageType  =  input . charAt ( 0 );
             }
            
         //end of while loops in main method
         //if statements within methods now start


             if (  packageType  ==   'A'   ||  packageType  ==   'a'   )
             {
                 if (  hoursUsed  >   10   )
                 {
                    baseCharge  =  PACKAGE_A_COST ;
                    additionalCharge  =   (  hoursUsed  -   10   )   *   2 ;                             
                 }
                 else
                 {
                    baseCharge  =   (  PACKAGE_A_COST  );
                    additionalCharge  =   0 ;
                 }
                
                subtotalPackageA  =  baseCharge  +  additionalCharge  +  surcharge ;
                discountAmount  =  subtotalPackageA  *  discountRate ;
                totalChargePackageA  =  subtotalPackageA  -  discountAmount ;
                
                 //counter and accumulator
                
                totalOfCustomers  =  totalOfCustomers  +   1 ;
                totalOfDiscountAmount  =  totalOfDiscountAmount  +  discountAmount ;
                totalOfTotalCharge  =  totalOfTotalCharge  +  totalChargePackageA ;

                averageDiscountAmount  =  totalOfDiscountAmount  /  totalOfCustomers ;
                averageTotalCharge  =  totalOfTotalCharge  /  totalOfCustomers ;

                 System . out . println (   "Base Charge for Package A:\t\t"   +  currency . format (  baseCharge  )   );
                 System . out . println (   "Additional Charge for Package A:\t"   +  currency . format (  additionalCharge  )   );
                 System . out . println (   "Surcharge for Zip Code:\t\t\t"   +  currency . format (  surcharge  )   );
                 System . out . println (   "Subtotal for Package A:\t\t\t"   +  currency . format (  subtotalPackageA  )   );
                 System . out . println (   "Discount Amount for County:\t\t"   +  currency . format (  discountAmount  )   );
                 System . out . println (   "Total Charge for Package A:\t\t"   +  currency . format (  totalChargePackageA  )   );
                 System . out . println (   "Total Discount Amount for All Packages:\t"   +  currency . format (  totalOfDiscountAmount  )   );
                 System . out . println (   "Total Charge for All Packages\t\t"   +  currency . format (  totalOfTotalCharge  )   );
                 System . out . println (   "Average Discount Amount:\t\t"   +  currency . format (  averageDiscountAmount  )   );
                 System . out . println (   "Average Total Charge:\t\t\t"   +  currency . format (  averageTotalCharge  )   );                
                 System . out . println (   "Total Customers:\t\t\t"   +  totalOfCustomers  );                 

                 if (  totalChargePackageA  >  PACKAGE_B_COST  )
                 {                             
                    baseCharge  =  PACKAGE_B_COST ;
                    additionalCharge  =   (  hoursUsed  -   20   )   *   1 ;

                    subtotalPackageB  =  baseCharge  +  additionalCharge  +  surcharge ;

                    discountAmount  =  subtotalPackageB  *  discountRate ;

                    totalChargePackageB  =  subtotalPackageB  -  discountAmount ;

                    savingsPackageB  =  totalChargePackageA  -  totalChargePackageB ;

                     System . out . println (   "Package B Savings:\t\t\t"   +  currency . format (  savingsPackageB  )   );                                   
                 }

                 if (  totalChargePackageA  >  PACKAGE_C_COST  )
                 {
                    baseCharge  =  PACKAGE_C_COST ;

                    subtotalPackageC  =  baseCharge  +  surcharge ;

                    discountAmount  =  subtotalPackageC  *  discountRate ;

                    totalChargePackageC  =  subtotalPackageC  -  discountAmount ;

                    savingsPackageC  =  totalChargePackageA  -  totalChargePackageC ;

                     System . out . println (   "Package C Savings:\t\t\t"   +  currency . format (  savingsPackageC  )   );
                 }                 
             }                           
             else   if (  packageType  ==   'B'   ||  packageType  ==   'b'   )
             {
                  if (  hoursUsed  >   20   )
                 {
                    baseCharge  =  PACKAGE_B_COST ;
                    additionalCharge  =   (  hoursUsed  -   20   )   *   1 ;                     
                 }
                 else
                 {
                    baseCharge  =  PACKAGE_B_COST ;
                    additionalCharge  =   0 ;
                 }

                subtotalPackageB  =  baseCharge  +  additionalCharge  +  surcharge ;

                discountAmount  =  subtotalPackageB  *  discountRate ;

                totalChargePackageB  =  subtotalPackageB  -  discountAmount ;
                
                totalOfCustomers  =  totalOfCustomers  +   1 ;
                totalOfDiscountAmount  =  totalOfDiscountAmount  +  discountAmount ;
                totalOfTotalCharge  =  totalOfTotalCharge  +  totalChargePackageB ;
               
                
                averageDiscountAmount  =  totalOfDiscountAmount  /  totalOfCustomers ;
                averageTotalCharge  =  totalOfTotalCharge  /  totalOfCustomers ;

                 System . out . println (   "Base Charge for Package B:\t\t"   +  currency . format (  baseCharge  )   );
                 System . out . println (   "Additional Charge for Package B:\t"   +  currency . format (  additionalCharge  )   );
                 System . out . println (   "Surcharge for Zip Code:\t\t\t"   +  currency . format (  surcharge  )   );
                 System . out . println (   "Subtotal for Package B:\t\t\t"   +  currency . format (  subtotalPackageB  )   );
                 System . out . println (   "Discount Amount for County:\t\t"   +  currency . format (  discountAmount  )   );
                 System . out . println (   "Total Charge for Package B:\t\t"   +  currency . format (  totalChargePackageB  )   );
                 System . out . println (   "Total Discount Amount for All Packages:\t"   +  currency . format (  totalOfDiscountAmount  )   );
                 System . out . println (   "Total Charge for All Packages\t\t"   +  currency . format (  totalOfTotalCharge  )   );
                 System . out . println (   "Average Discount Amount:\t\t"   +  currency . format (  averageDiscountAmount  )   );
                 System . out . println (   "Average Total Charge:\t\t\t"   +  currency . format (  averageTotalCharge  )   );                
                 System . out . println (   "Total Customers:\t\t\t"   +  totalOfCustomers  );

                 if (  totalChargePackageB  >  PACKAGE_C_COST  )
                 {
                    baseCharge  =  PACKAGE_C_COST ;                   

                    subtotalPackageC  =  baseCharge  +  surcharge ;

                    discountAmount  =  subtotalPackageC  *  discountRate ;
   
                    totalChargePackageC  =  subtotalPackageC  -  discountAmount ;
                    

                    savingsPackageC  =  totalChargePackageB  -  totalChargePackageC ;

                     System . out . println (   "Package C Savings:\t\t\t"   +  currency . format (  savingsPackageC  )   );                     
                 }                                    
             }
             else   if (  packageType  ==   'C'   ||  packageType  ==   'c'   )
             {
                baseCharge  =  PACKAGE_C_COST ;

                subtotalPackageC  =  baseCharge  +  surcharge ;

                discountAmount  =  subtotalPackageC  *  discountRate ;

                totalChargePackageC  =  subtotalPackageC  -  discountAmount ;

                
                totalOfCustomers  =  totalOfCustomers  +   1 ;
                totalOfDiscountAmount  =  totalOfDiscountAmount  +  discountAmount ;
                totalOfTotalCharge  =  totalOfTotalCharge  +  totalChargePackageC ;

                
                averageDiscountAmount  =  totalOfDiscountAmount  /  totalOfCustomers ;
                averageTotalCharge  =  totalOfTotalCharge  /  totalOfCustomers ;

                 System . out . println (   "Base Charge for Package C:\t\t"   +  currency . format (  baseCharge  )   );
                 System . out . println (   "Surcharge for Zip Code:\t\t\t"   +  currency . format (  surcharge  )   );
                 System . out . println (   "Subtotal for Package C:\t\t\t"   +  currency . format (  subtotalPackageC  )   );
                 System . out . println (   "Discount Amount for County:\t\t"   +  currency . format (  discountAmount  )   );
                 System . out . println (   "Total Charge for Package C:\t\t"   +  currency . format (  totalChargePackageC  )   );
                 System . out . println (   "Total Discount for All Packages:\t"   +  currency . format (  totalOfDiscountAmount  )   );
                 System . out . println (   "Total Charge for All Packages:\t\t"   +  currency . format (  totalOfTotalCharge  )   );
                 System . out . println (   "Average Discount Amount:\t\t"   +  currency . format (  averageDiscountAmount  )   );
                 System . out . println (   "Average Total Charge:\t\t\t"   +  currency . format (  averageTotalCharge  )   );      
                 System . out . println (   "Total Customers:\t\t\t"   +  totalOfCustomers  );
             }
            
                 
             System . out . print (   "\nEnter hours used: "   );
            hoursUsed  =  keyboard . nextDouble ();
            keyboard . nextLine ();
         }          
         System . out . println (   "\nGood-bye!"   );
     }     
}