为什么我的代码忽略异常?
Why does my code ignore the Exception?
我的代码应该使在 discountCode 字符串中输入除字母或“$”以外的任何内容都会导致抛出异常,但这种情况不会发生。用户可以键入任何内容,但仍然收不到异常消息。
非常感谢任何帮助,谢谢。
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 行试图通过 returning upperDiscountCode 完成的事情感到有点困惑,如果第一个字符是字母,它应该只是 return或“$”,因此不检查任何其他字母。
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");
}
我的代码应该使在 discountCode 字符串中输入除字母或“$”以外的任何内容都会导致抛出异常,但这种情况不会发生。用户可以键入任何内容,但仍然收不到异常消息。 非常感谢任何帮助,谢谢。
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 行试图通过 returning upperDiscountCode 完成的事情感到有点困惑,如果第一个字符是字母,它应该只是 return或“$”,因此不检查任何其他字母。
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");
}