Java Java Objects Delivering the MVP Applying a Discount Code

Denson Dube
Denson Dube
2,612 Points

cannot find symbol

can you please assist with where i am getting the error please look at my private char method

Order.java
public class Order {
  private String itemName;
  private int priceInCents;
  private String discountCode;

  private char normalizeDiscountCode(char discountCode){
    discountCode = Character.toUpperCase;
    return discountCode;

  }

  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;

  }
}
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

Discount code is a String, not a char. So normalizeDiscountCode method will look like this:

private String normalizeDiscountCode(String code){

    return code.toUpperCase(); // It returns String value and takes String as a parameter

  }

Lastly, you need to set this.discountCode to the result of the normalizeDiscountCode method. It will look like this:

 public void applyDiscountCode(String discountCode) {

    this.discountCode = discountCode;

    this.discountCode = normalizeDiscountCode(discountCode); // <-------------
  }

I hope it makes sense. If not, tell me which parts you did not understand and I will try my best to explain!