我正在处理一项作业,并被告知使用异常处理回答问题。 这是问题:
validateShelveNo(String)
方法接收到被搁置的号码,并检查shelveNo
是否以ABC开头。
如果不是,则该方法将引发异常错误“货架编号必须以ABC开头”。
此外,该方法还会检查条形码是否以101到120之间的任何数字结尾,否则该方法
引发“货架编号必须在101和120之间”。
当货架编号满足所有要求时,该方法必须返回true。
和我的答案:
public boolean validateShelveNo(String shelveNo) {
boolean test2 = true;
if (shelveNo.startsWith("ABC") == true)) {
test2 = true;
}
else
{
throw new Exception("The shelf number must start with ABC ");
test2 = false;
}
String lastThreeDigits = "";
if (shelveNo.length() > 3)
{
lastThreeDigits = shelveNo.substring(shelveNo.length() - 3);
for (int i = 0; i < lastThreeDigits.length; i++) {
if ((Character.isDigit(lastThreeDigits.charAt(i)) == true)) {
int digits = Integer.parseInt(lastThreeDigits);
if (digits >= 101 && digits <= 120) {
test2 = true;
}
else {
throw new IllegalArgumentException("The shelf number must be within 101 and 120");
test2 = false;
}
test2 = true;
}
else {
System.out.println(" The last 3 Characters are not numeric");
test2 = false;
}
}
}
else {
throw new IllegalArgumentException("shelf number has less than 3 characters!");
test2 = false;
}
}
return test2;
}
答案 0 :(得分:0)
这是我的实现。希望只使用您知道的Java部分。
/**
* Validates the shelf number. The number must begin with "ABC" and must terminate with
* a three digit integer number between 101 and 120. Method throws unchecked exception
* if the supplied shelf number is not valid.
*
* @param shelfNo - the shelf number to validate.
*
* @return true if shelfNo is valid.
*/
public boolean validateShelfNo(String shelfNo) {
if (shelfNo == null) {
throw new NullPointerException("Null shelf number.");
}
int length = shelfNo.length();
if (length == 0) {
throw new IllegalArgumentException("Empty shelf number.");
}
if (length < 6) {
throw new IllegalArgumentException("Invalid shelf number: " + shelfNo);
}
shelfNo = shelfNo.toUpperCase();
if (!shelfNo.startsWith("ABC")) {
throw new IllegalArgumentException("Invalid shelf number: " + shelfNo);
}
String lastThreeDigits = shelfNo.substring(length - 3);
int number = Integer.parseInt(lastThreeDigits); // throws NumberFormatException if 'suffix' not a number
if (number < 101 || number > 120) {
throw new IllegalArgumentException("Number not between 101 and 120.");
}
return true;
}
首先,我添加 javadoc 注释,说明该方法的作用。因为它是一个公共方法,所以任何人都可以调用它,因此您需要向他们解释它的作用。
可以使用任何类型的参数值调用该方法,因此在检查它以ABC开头并以101到120之间的数字结尾之前,需要确保它不为null,并且至少包含六个字符。 / p>
由于只要shelfNo
无效,该方法都会引发异常,因此该方法仅需要返回true
。当一个方法抛出异常时,它不需要返回任何东西。