Java- Problem with array of objects


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 1 of 1

Thread: Java- Problem with array of objects

Threaded View

  1. #1
    Join Date
    Mar 2007
    Posts
    28

    Java- Problem with array of objects

    I am working on a lab that calculates a federal tax, state tax, and Net Pay and displays all the taxpayer's information to the screen. The Taxpayer is a class, and WeeklyTaxpayer, BiWeeklyTaxpayer, and MonthlyTaxpayer are its derived classes.

    I know that my classes work fine, because I can get the program to work by declaring Taxpayer objects instead of the array.

    However, the assignment requires we use a Taxpayer type array and one Taxpayer object to receive the data and display it in a JOPtionPane Dialog Box.
    Whenever I execute the program, I keep getting a Null Pointer Exception.

    Can anyone see what I am doing wrong? I have all my code posted.
    (Oh and yes the array is supposed to be size 50, even though you can only read in 5 taxpayers.)

    Main Code:
    Code:
    /*
     * Main.java
     *
     * Created on October 4, 2007, 2:09 AM
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
    
    package lab06b;
    import javax.swing.*;
    import java.text.*;
    
    /**
     *
     * @
     */
    
    public class Main {
        
        /** Creates a new instance of Main */
        public Main() {
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main( String[] args ) {
            final int MAX_NUMBER = 5;
            Taxpayer [] taxInfo = new Taxpayer [50];
            Taxpayer t = null;
            int index = 0; // Holds index value for array variable
            DecimalFormat prec2 = new DecimalFormat("$#.00");
            DecimalFormat prec1 = new DecimalFormat("#.0%");
            String nameStr = "";   // Holds taxpayer name entered by user
            String ssNumStr = "";  // Holds taxpayer's SSNnumber as string, entered by user
            int ssNum = 0;         // Taxpayer's ssnumber as int
            char taxpayerType;      // The char form of the user-enetered taxpayer type
            String grossStr = "";  // Taxpayer's gross pay as string, entered by user
            double grossPay = 0.0; // Taxpayer's gross pay as double
            
            int count = 0;         // The number of taxpayers created
            String outputStr = ""; // String for output display to user
            String outputStr2 = "";// String for output display to user
            String msgStr = "";    // Holds message for display to user
            int resp = 0;          // User's response from showConfirmDialog method
            
            while (true) {   // Loop to input data on each taxpayer
                count++;
                
                // Read in name from user as a string
                nameStr = JOptionPane.showInputDialog("Enter taxpayer name");
                
                // Read in ID number from user as a string
                ssNumStr = JOptionPane.showInputDialog("Enter SSN number");
                // Convert from type String to type int
                ssNum = Integer.parseInt(ssNumStr.trim());
                
                // Convert from Type string to type char
                taxpayerType = getTaxpayerType();
                
                // Read in gross pay from user as a string
                grossStr = JOptionPane.showInputDialog("Enter gross pay");
                // Convert from type String to type double
                grossPay = Double.parseDouble(grossStr.trim());
                
                // Create Taxpayer instance
                switch(taxpayerType) {
                    case 'W': t = new WeeklyTaxpayer(nameStr, ssNum, grossPay); break;
                    case 'w': t = new WeeklyTaxpayer(nameStr, ssNum, grossPay); break;
                    case 'B': t = new BiweeklyTaxpayer(nameStr, ssNum, grossPay); break;
                    case 'b': t = new BiweeklyTaxpayer(nameStr, ssNum, grossPay); break;
                    case 'M': t = new MonthlyTaxpayer(nameStr, ssNum, grossPay); break;
                    case 'm': t = new MonthlyTaxpayer(nameStr, ssNum, grossPay); break;
                } // End of switch statement
                
                // Assignes taxpayer information to array (index) 
                taxInfo[index] = t;
               
               // Create ouputstr for each taxpayer's information
               outputStr += count + ". " + taxInfo[index].toString() + "\n";
               
               ++index; // increment array to next index 
                
                if (count < MAX_NUMBER) {
                    msgStr = "\nMax number of allowed taxpayers is: " + MAX_NUMBER + "\nContinue?";
                    
                    resp = JOptionPane.showConfirmDialog(null, outputStr + msgStr, "Confirm",
                            JOptionPane.YES_NO_OPTION,
                            JOptionPane.QUESTION_MESSAGE);
                    if (resp == JOptionPane.NO_OPTION)
                        break;
                } else {
                    msgStr = "Program cannot handle any more additional taxpayers.";
                    JOptionPane.showMessageDialog(null, outputStr + msgStr, "Results",
                            JOptionPane.INFORMATION_MESSAGE);
                    break;
                }// End of if statement
            }// End of while loop
            
            outputStr2 = "Taxpayer list:\n";
            for (int i = 0; i <= count; i++){
                t = taxInfo[i];
                
                outputStr2 += "\n" + i + ". " + t.getName() +
                        "\n    Taxpayer Type: " + t.getClass().getName() +
                        "\n    SSN: " + t.getSSNumber() +
                        "\n    Gross Pay: " + prec2.format(t.getGrossPay()) +
                        "\n    NYS Tax: " + prec2.format(t.computeStateTax()) +
                        "\n    Fed Tax: " + prec2.format(t.computeFedTax()) +
                        "\n    Net Pay: " + prec2.format(t.computeNetPay()) + "\n"; 
            }
        
            JOptionPane.showMessageDialog(null, outputStr2, "TAXPAYERS",
                    JOptionPane.INFORMATION_MESSAGE);
        }// End of main
        
        // Gets, checks, and returns character for taxpayer type
        public static char getTaxpayerType() {
            String taxpayerTypeStr;
            char type;
            
            while(true){
                // Read in letter choice for taxpayerType as a string
                taxpayerTypeStr = JOptionPane.showInputDialog(
                        "Choose taxpayer type by letter choice\n"
                        + "W - Weekly\n" + "B - Biweekly\n" + "M - Monthly");
                
                // Convert from Type string to type char
                type = taxpayerTypeStr.charAt(0);
                
                if (type == 'W' || type == 'w' || type == 'B' || type == 'b' ||
                        type == 'M' || type == 'm') {
                    break;
                } else {
                    JOptionPane.showMessageDialog(null,
                            "Error: Invalid Character! \nPlease input a valid character.",
                            "ERROR MESSAGE", JOptionPane.ERROR_MESSAGE);
                }
            }
            
            return(type);
        }
        
    }// End of class
    Netbeans is saying the exception is happening here:
    Code:
    outputStr2 += "\n" + i + ". " + t.getName() +

    I wanted to post my classes too, but the post became too long.



    EDIT:
    I can't believe I didn't catch this all day, but I must have been typing the code too fast and accidentally put a <= sign in my for loop. This was looping to the 6th array variable which is null. This was creating the null exception.
    Last edited by Luvanime; 10-13-2007 at 12:06 AM. Reason: Found The Problem

Similar Threads

  1. Replies: 1
    Last Post: 02-06-2006, 12:48 AM
  2. Java vs. .Net. A questionnaire
    By Basil in forum .NET
    Replies: 1
    Last Post: 05-13-2005, 06:46 AM
  3. Array analysis problem
    By brouse in forum VB Classic
    Replies: 1
    Last Post: 05-10-2005, 02:19 PM
  4. Replies: 0
    Last Post: 12-13-2001, 12:06 PM
  5. JAVADOTNET !!!
    By Dharmesh in forum .NET
    Replies: 4
    Last Post: 10-01-2001, 03:47 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center