为什么我的代码会忽略异常?

时间:2018-03-28 23:24:18

标签: java arrays object if-statement illegalargumentexception

我的代码应该输入除字母或' $'以外的任何内容。在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);
  }
}

2 个答案:

答案 0 :(得分:2)

Java 8版本:

private String normalizeDiscountCode(String discountCode) {
    String upperDiscountCode = discountCode.toUpperCase();
    if (upperDiscountCode.chars()
            .allMatch(c -> Character.isLetter(c) || c == '$')) {
        return upperDiscountCode;
    }
    throw new IllegalArgumentException("Invalid discount code");
}

答案 1 :(得分:1)

试试这个

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

..虽然我仍然对你在第6行尝试完成的事情感到有点困惑,因为返回了upperDiscountCode,如果第一个字符是字母或者' $&#39,它应该返回;因此,不检查任何其他字母。