Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

1. Using Java Write a class Name that stores a person’s first, middle, and last

ID: 3814507 • Letter: 1

Question

1. Using Java Write a class Name that stores a person’s first, middle, and last names and provides the following methods:

public Name(String first, String middle, String last)—constructor. The name should be stored in the case given; don’t convert to all upper or lower case.

public String getFirst()—returns the first name

public String getMiddle()—returns the middle name

public String getLast()—returns the last name

public String firstMiddleLast()—returns a string containing the person’s full name in order, e.g., “Mary Jane Smith”.

public String lastFirstMiddle()—returns a string containing the person’s full name with the last name first followed by a comma, e.g., “Smith, Mary Jane”.

public boolean equals(Name otherName)—returns true if this name is the same as otherName. Comparisons should not be case sensitive. (Hint: There is a String method equalsIgnoreCase that is just like the String method equals except it does not consider case in doing its comparison.)

public String initials()—returns the person’s initials (a 3-character string). The initials should be all in upper case, regardless of what case the name was entered in. (Hint: Instead of using charAt, use the substring method of String to get a string containing only the first letter—then you can upcase this one-letter string. See Figure 3.1 in the text for a description of the substring method.)

public int length()—returns the total number of characters in the full name, not including spaces.

2. Now write a program TestNames.java that prompts for and reads in two names from the user (you’ll need first, middle, and last for each), creates a Name object for each, and uses the methods of the Name class to do the following:

a. For each name, print

first-middle-last version

last-first-middle version

initials

length

b. Tell whether or not the names are the same.

Explanation / Answer

TestNames.java

import java.util.Scanner;


public class TestNames {
   public static void main(String[] args)
   {
       Scanner scan = new Scanner(System.in);
       System.out.println("Enter first name: ");
       String first1=scan.next();
       System.out.println("Enter middle name: ");
       String middle1=scan.next();
       System.out.println("Enter last name: ");
       String last1=scan.next();
       Name name1= new Name(first1,middle1,last1);
       System.out.println(name1.firstMiddleLast());
       System.out.println(name1.lastFirstMiddle());
       System.out.println(name1.initials());
       System.out.println(name1.length());
       System.out.println("Enter first name: ");
       String first2=scan.next();
       System.out.println("Enter middle name: ");
       String middle2=scan.next();
       System.out.println("Enter last name: ");
       String last2=scan.next();
       Name name2= new Name(first2,middle2,last2);
       System.out.println(name2.firstMiddleLast());
       System.out.println(name2.lastFirstMiddle());
       System.out.println(name2.initials());
       System.out.println(name2.length());
      
   }
}

Name.java

public class Name {
   private String first, middle, last;

   public Name(String first, String middle, String last) {
       this.first = first;
       this.last = last;
       this.middle = middle;
   }

   public String getFirst() {
       return first;
   }

   public String getMiddle() {
       return middle;
   }

   public String getLast() {
       return last;
   }

   public String firstMiddleLast() {
       return first + " " + middle + " " + last;
   }

   public String lastFirstMiddle() {
       return last + ", " + first + " " + middle;

   }

   public boolean equals(Name otherName) {
       if(first.equalsIgnoreCase(otherName.getFirst()) && middle.equalsIgnoreCase(otherName.getMiddle()) && last.equalsIgnoreCase(otherName.getLast())) {
           return true;
       }
       return false;
   }
   public String initials() {
   return   (""+first.charAt(0)+middle.charAt(0)+last.charAt(0)).toUpperCase();
   }
   public int length() {
       return first.length()+last.length()+middle.length();
   }
}

Output:

Enter first name:
Suresh
Enter middle name:
Kumar
Enter last name:
Murapaka
Suresh Kumar Murapaka
Murapaka, Suresh Kumar
SKM
19
Enter first name:
Sekhar
Enter middle name:
chandra
Enter last name:
murapaka
Sekhar chandra murapaka
murapaka, Sekhar chandra
SCM
21