请参考下面代码中的注释 1、2-
在 swift 中,函数可以有一个可选的返回类型,在使用 Guard 调用函数时可以解开包装。我很想知道在 Java 中处理此类情况的可选返回的正确方法。
static Integer doCalc(Integer num1, Integer num2, char operation) {
switch(operation) {
case 'a':
return num1 + num2;
case 's':
return num1 - num2;
case 'm':
return num1 * num2;
case 'd':
return num2 != 0 ? num1 / num2 : -1; // **COMMENT 1**
default:
System.out.println("not a valid operation. use 'a' 's' 'm' 'd'");
return -1; // **COMMENT 2**
}
}
不能null
的原始int
(或任何其他原始)。您可以使用包装类(在本例中为 java.lang.Integer
),并为错误输入返回 null
和有效输入的自动装箱值:
static Integer doCalc(int num1, int num2, char operation) {
switch(operation) {
case 'a':
return num1 + num2;
case 's':
return num1 - num2;
case 'm':
return num1 * num2;
case 'd':
return num2 != 0 ? num1 / num2 : null;
default:
System.out.println("not a valid operation. use 'a' 's' 'm' 'd'");
return null;
}
}
处理此问题的正确方法是在操作无效时抛出IllegalArgumentException
,在尝试除以零时抛出ArithmeticException
。
通常你会抛出一个异常。例如。
static int doCalc(int num1, int num2, char operation) {
switch(operation) {
case 'a':
return num1 + num2;
case 's':
return num1 - num2;
case 'm':
return num1 * num2;
case 'd':
if (num2 == 0) {
throw new IllegalArgumentException("cannot divide by zero");
}
return num1 / num2;
default:
throw new IllegalArgumentException("not a valid operation. use 'a' 's' 'm' 'd'");
}
}