KnowledgeGeek
KnowledgeGeek

Reputation: 197

Final print statement returning null (java)

I have a basic name application that is taking in user data from the main class, splits the data in the parser class and then tries to assign everything in the final class and print it out in the toString method. I know the main class and the parser are working fine. I have verified in the parser class that the data DOES split properly and also sends the data through the object I made to the final class to assign it all. However, my final code is returning null..

MAIN CLASS


            import java.util.Scanner;
            public class MainClass {
                public static void main (String[]args)
                {
                    Scanner input = new Scanner(System.in); //create scanner object to gather name information
                    String fullName = null; //set the predefined value for the users name to null
                    nameParse splitInformation = new nameParse(); //method build to split the name into different sections
                    SecondClass access = new SecondClass(); //class built to output the different name data

                    System.out.println("What is your name?");

                    fullName = input.nextLine(); //store the users name and pass it into the data parser

                    splitInformation.parseNameInformation(fullName); //name parsing parameters built

                    System.out.println(access.toString());





                }

            }

Data Parser Class


            public class nameParse {
                private String firstName;
                private String middleName;
                private String lastName;

                public nameParse()
                {
                    firstName = "initial";
                    middleName = "initial";
                    lastName = "initial";
                }

                public void parseNameInformation(String inputInfo)
                {

                    //Create an array to store the data and split it into multiple sectors
                    String nameInformation[] = inputInfo.split("\\s");

                    firstName = nameInformation[0];
                    middleName = nameInformation[1];
                    lastName = nameInformation[2];

                    //System.out.println(firstName + " " + middleName + " " + lastName);

                    SecondClass sendData = new SecondClass();

                    sendData.setFirstName(firstName);
                    sendData.setMiddleName(middleName);
                    sendData.setLastName(lastName);


                }

            }

Final Class __

    public class SecondClass {

        private String firstName;
        private String middleName;
        private String lastName;


        /*public String GFN()
        {
            return firstName;
        }

        public String GMN()
        {
            return middleName;
        }

        public String GLN()
        {
            return lastName;
        }*/
        public String setFirstName(String yourFirstName)
        {
            firstName = yourFirstName;
            return this.firstName;
        }

        public String setMiddleName(String yourMiddleName)
        {
            middleName = yourMiddleName;
            return this.middleName;
        }

        public String setLastName(String yourLastName)
        {
            lastName = yourLastName;
            return this.lastName;
        }

        public String getFN()
        {
            return firstName;
        }

        public String toString()
        {
            String printNameInfo = "\nYour First Name:\t" + getFN();
            return printNameInfo;
        }

    }

Upvotes: 1

Views: 587

Answers (1)

Hovercraft Full Of Eels
Hovercraft Full Of Eels

Reputation: 285405

You never set any of your SecondClass object's (called "access") fields, so of course they'll all be null.

So in short, your code creates a nameParse object, gets information from the user, but does nothing with that information. You create a SecondClass object called access, put no data into it, and so should expect no valid data in it when you try to print it out. Solution: put information into your SecondClass object first. Call its setter methods:

// be sure to call the setter methods before trying to print anything out:
access.setSomething(something);
access.setSomethingElse(somethingElse);

Edit
You state:

I thought I set the data using the sendData.setFirstname(...) etc?

In the parseNameInformation method you create a new SecondClass object and you do set the fields of this object, but this object is completely distinct from the one in your main method whose fields are still null. To solve this, give parseNameInformation a method parameter and pass in your main method's SecondClass object into it and set its methods. You'll have to create the SecondClass object before calling the method of course.

i.e.,

public void parseNameInformation(String inputInfo, SecondClass sendData)
{
    //Create an array to store the data and split it into multiple sectors
    String nameInformation[] = inputInfo.split("\\s");

    firstName = nameInformation[0];
    middleName = nameInformation[1];
    lastName = nameInformation[2];

    //System.out.println(firstName + " " + middleName + " " + lastName);

    // SecondClass sendData = new SecondClass();  // !!! get rid of this

    sendData.setFirstName(firstName);
    sendData.setMiddleName(middleName);
    sendData.setLastName(lastName);
}

Upvotes: 1

Related Questions