Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Java Objects Delivering the MVP Applying a Discount Code

John Grillo
John Grillo
30,241 Points

Java Apply discount Code task 1 problems -- '.' is an unknown symbol?

Hiya Treehouse Land, I've been tackling this problem for a good 20 minutes now and after looking at other's solutions, I'm at my wits end. I can not make hide nor hair of this error message. And if you look at my code, you'll see it satisfies the requirement.

./Order.java:27: error: cannot find symbol this.discountCode = discountCode.normalizeDiscountCode(discountCode); ^ symbol: method normalizeDiscountCode(String) location: variable discountCode of type String Note: JavaTester.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 1 error

Thank you for reading. I'm just doing the best I can.

Order.java
public class Order {
  private String itemName;
  private int priceInCents;
  private String discountCode;
  private String normalizeDiscountCode(String discountCode) {
   return discountCode.toUpperCase(); 
  }

  public Order(String itemName, int priceInCents) {
    this.itemName = itemName;
    this.priceInCents = priceInCents;
  }

  public String getItemName() {
    return itemName;
  }

  public int getPriceInCents() {
    return priceInCents;
  }

  public String getDiscountCode() {
    return discountCode;
  }

  public void applyDiscountCode(String discountCode) {
    this.discountCode = discountCode.normalizeDiscountCode(discountCode);
  }
}
Example.java
public class Example {

  public static void main(String[] args) {
    // This is here just for example use cases.

    Order order = new Order(
            "Yoda PEZ Dispenser",
            600);

    // These are valid.  They are letters and the $ character only
    order.applyDiscountCode("abc");
    order.getDiscountCode(); // ABC

    order.applyDiscountCode("$ale");
    order.getDiscountCode(); // $ALE


    try {
      // This will throw an exception because it contains numbers
      order.applyDiscountCode("ABC123");
    } catch (IllegalArgumentException iae) {
      System.out.println(iae.getMessage());  // Prints "Invalid discount code"
    }
    try {
      // This will throw as well, because it contains a symbol.
      order.applyDiscountCode("w@w");
    }catch (IllegalArgumentException iae) {
      System.out.println(iae.getMessage());  // Prints "Invalid discount code"
    }

  }
}

1 Answer

Ben Reynolds
Ben Reynolds
35,170 Points

I think it's this line:

    this.discountCode = discountCode.normalizeDiscountCode(discountCode);

It thinks you're calling a method named normalizeDiscountCode that lives in a class named "discountCode". Remove the "discountCode." at the beginning of the method call and you should be good.

John Grillo
John Grillo
30,241 Points

I did that as my first solution and it didn't work then, now it suddenly is. What's going on?