The program compiles 100% however when I run the main I get a \"java.lang.NullPo
ID: 3625913 • Letter: T
Question
The program compiles 100% however when I run the main I get a "java.lang.NullPointerException"Person.java line 45
TestPerson.java line 11
Bottom line the read method isnt working properly but it compiles properly and I have no clue how to fix it. Any help will be great.
Thanks
****************************************************************************************************
Person.java
import java.util.Scanner;
public class Person
{
private Name name;
private int age;
Scanner keyboard = new Scanner(System.in);
public Person()
{
}
public Person(Name n, int a)
{
name.setName(n);
age=a;
}
public String toString()
{
return (name.toString()+ " "+age);
}
public void setName(Name name)
{
this.name.setName(name);
}
public void setAge(int a)
{
age=a;
}
public void setPerson(Name n, int a)
{
name.setName(n);
age=a;
}
public void read()
{
name.readName();
System.out.println("Enter the age?");
age = keyboard.nextInt();
}
public Name getName()
{
return name;
}
public int getAge()
{
return age;
}
public Person add(Person n)
{
Person answer=new Person();
answer.name=n.name;
answer.age=n.age;
return answer;
}
}
****************************************************************************************************
Name.java
import java.util.Scanner;
public class Name
{
private String firstName;
private String middleName;
private String lastName;
Scanner keyboard = new Scanner(System.in);
public Name()
{
}
public Name(String f, String m, String l)
{
firstName=f;
middleName=m;
lastName=l;
}
public void readName()
{
System.out.println("What is your first name?");
firstName = keyboard.nextLine();
System.out.println("What is your middle name?");
middleName = keyboard.nextLine();
System.out.println("What is your last name?");
lastName = keyboard.nextLine();
}
public String getFirstName()
{
return firstName;
}
public String getMiddleName()
{
return middleName;
}
public String getLastName()
{
return lastName;
}
public void changeNameTo(Name n)
{
firstName=n.firstName;
middleName=n.middleName;
lastName=n.lastName;
}
public Name add(Name n)
{
Name answer=new Name();
answer.firstName=n.firstName;
answer.middleName=n.middleName;
answer.lastName=this.lastName +"-"+ n.lastName;
return answer;
}
public String toString()
{
return firstName+ " "+middleName+ " "+lastName;
}
public void setFirstName(String f)
{
firstName = f;
}
public void setMiddleName(String m)
{
middleName = m;
}
public void setLastName(String l)
{
lastName = l;
}
public void setName(String f, String m, String l)
{
firstName = f;
middleName = m;
lastName = l;
}
public void setName(Name n)
{
firstName = n.getFirstName();
middleName = n.getMiddleName();
lastName = n.getLastName();
}
}
}
****************************************************************************************************
TestPerson.java
public class TestPerson
{
public static void main(String[] args)
{
Person person1 = new Person();
Person person2 = new Person();
System.out.println("Enter your information.");
person1.read( );
System.out.println("Enter your friends information.");
person2.read( );
System.out.println("Your information");
System.out.println("Your name is " + person1.getName());
System.out.println("Your age is " + person1.getAge());
System.out.println("Your friends information");
System.out.println("Your friends name is " + person2.getName());
System.out.println("Your friends age is " + person2.getAge());
}
}
Explanation / Answer
public void read()
{
name = new Name(); //this was ur mistake
name.readName();
System.out.println("Enter the age?");
age = keyboard.nextInt();
}
make this change to you read method in Person class
cz u have to alloacte the memory to the object that u have created.......either make the method of name class static.......
i guess u got the point where u did the mistake
please rate....thanks
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.