3 回答
TA贡献1810条经验 获得超5个赞
您绝对不会使用控制流程try-catch- 这是不好的做法。为此,有if-else声明。
boolean conditionArg0 = arg[0] == 10 || arg[0] == 20 || arg[0] == 30;
boolean conditionArg1 = arg[1] == 2 || arg[1] == 4 || arg[1] == 6;
if (conditionArg0 && conditionArg1) {
// input is fine, go on
} else {
// display error
}
您应该首先检查数组arg是否至少有 2 个值,否则NullPointerException将抛出 。
如果存在更多允许值,最好使用Set<Integer>并搜索该值是否存在。如果允许的值遵循某种模式(例如可被 10 整除),那么最好使用计算而不是Set.
编辑:为什么使用try-catch被认为是不好的做法来控制流量?这里和这里已经讨论过很多次了。有很多论点,我发现最重要的是(取自此处):
异常是针对异常情况,而不是针对正常的流量控制。应该使用异常处理来处理意外/异常情况,而不是作为正常的程序流程,否则,未捕获的异常将告诉您的信息少得多。
从语义上讲,使用if-else是一种控制流的干净方式。如果if-else比较元素的数量显着增加,您应该始终开始并重构。
TA贡献1865条经验 获得超7个赞
根据评论,
首先检查输入的长度是否正好为 2。
检查是否相等。
代码:
if(arg!=null && arg.length==2){
if( (arg[0].equals("10") || arg[0].equals("20") || arg[0].equals("30"))
&& (arg[1].equals("2") || arg[1].equals("4") || arg[1].equals("6")) ) {
Number data = new Number(arg[0], arg[1]);
}
else{
//Handle wrong input(s)
}
}
else{
//Handle wrong input(s)
}
添加回答
举报