Java Java Data Structures Efficiency! Using a Map to store Contact Methods

Compiler errors driving me nuts!! please help!

i keep getting these errors and I'm not sure how to fix them! I've tried everything (that I know of).

./com/example/model/Contact.java:23: error: cannot find symbol contactMethods newContactMethods = new contactMethods("firstName, lastName"); ^ symbol: class contactMethods location: class Contact ./com/example/model/Contact.java:23: error: cannot find symbol contactMethods newContactMethods = new contactMethods("firstName, lastName"); ^ symbol: class contactMethods location: class Contact Note: JavaTester.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 2 errors

com/example/model/Contact.java
package com.example.model;

import java.util.Map;
import java.util.Set;
import java.util.HashMap;

public class Contact {
  private String mFirstName;
  private String mLastName;
  private Map<String, String> mContactMethods;

  public Contact(String firstName, String lastName) {
    mFirstName = firstName;
    mLastName = lastName;
    /* This stores contact methods by name
     * eg:  "phone" => "(555) 555-1234"
     */
    mContactMethods = new HashMap<String, String>();
  }

  public void addContactMethod(String method, String value) {
    // TODO: Add to the contact method map
    contactMethods newContactMethods = new contactMethods("firstName, lastName");

  }

  /**
   * Returns the available contact methods.  eg: phone, pager,
   *
   * @return The name of the contact methods that are available
   */
  public Set<String> getAvailableContactMethods() {
    // FIXME: This should return the current contact method names.
    return null;
  }

  /**
   * Returns the value for the contact method if it exists, 
   *
   * @param methodName  The name of the contact method to look up.
   * @return The name of the contact methods that are available
   */
  public String getContactInfo(String methodName) {
    // FIXME: return the value for the passed in *methodName*
    return null;
  }

  public String getFirstName() {
    return mFirstName;
  }

  public String getLastName() {
    return mLastName;
  }

}

1 Answer

michaelcodes
michaelcodes
5,595 Points

Hi there, one problem that I have found is with this code:

 public void addContactMethod(String method, String value) {
    // TODO: Add to the contact method map
    contactMethods newContactMethods = new contactMethods("firstName, lastName");
}

For this you want to add the two strings that are being passed down to the current array rather than create a new object inside. For this we will use the .put method as such:

 public void addContactMethod(String method, String value) {
    mContactMethods.put(method, value);
}

Hope this helps!

Also, to address the compiler error itself, this is because of the object created. When declaring an object it has the form of

classname objectname = new classname(parameters if constructor calls for it)

Because there is no class with the name "contactMethods" the compiler is confused on what to do. If we were to declare this array object called newContactMethods (not what this challenge asks for, but important), we would use:

Map<String, String> newContactMethods = new HashMap<String, String>();