我的代码应使在DiscountCode String中输入除字母或'$'以外的任何内容均会引发异常,但这不会发生。用户可以键入任何内容,但仍然不会收到异常消息。
非常感谢任何帮助,谢谢。

private String normalizeDiscountCode(String discountCode) {
  String upperDiscountCode = discountCode.toUpperCase();

    for (char i : upperDiscountCode.toCharArray()) {
      if (Character.isLetter(i) || i == '$') {
        return upperDiscountCode;
      } else {
        throw new IllegalArgumentException("Invalid discount code");
        }
    }
    return upperDiscountCode;
  }

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

最佳答案

尝试这个

if(!Character.isLetter(i) && i != '$') {
    throw new IllegalArgumentException("Invalid discount code");
}
return upperDiscountCode;


..尽管我仍然对您在第6行通过返回upperDiscountCode试图完成的工作感到有些困惑,如果第一个字符是字母或'$',则应该返回该值,因此不检查其他任何字母。

09-17 18:21