我对 Java 还很陌生,我正在努力改进我的代码。有没有人有任何建议来简化这个程序,该程序检查是否将青少年号码(13-19)传递到方法中?或者如果有更好的方法来构建它。谢谢。
import java.util.Arrays;
import java.util.List;
public class TeenNumberChecker {
public static void main(String[] args) {
System.out.println(hasTeen(1,1,13));
System.out.println(isTeen(14));
}
public static boolean hasTeen(int a, int b, int c){
List<Integer> teenValues = Arrays.asList(13, 14, 15, 16, 17, 18, 19);
return (teenValues.contains(a)) || (teenValues.contains(b)) || (teenValues.contains(c));
}
public static boolean isTeen(int d){
List<Integer> teenValues = Arrays.asList(13, 14, 15, 16, 17, 18, 19);
return (teenValues.contains(d));
}
}
答案 0 :(得分:6)
这样的事情怎么样——只是检查一个数字条件?这也快得多(考虑到要检查的年龄有多少,这并不是在这种情况下真的很重要)。
public static boolean hasTeen(int a, int b, int c){
return isTeen(a) || isTeen(b) || isTeen(c);
}
public static boolean isTeen(int d){
return d >= 13 && d <= 19;
}
减少或消除代码重复是一种很好的做法,例如通过使 hasTeen()
的结果依赖于 isTeen()
,因此条件只需写入一次。
如果您希望 hasTeen()
接受任意多个参数,例如hasTeen(19)
和 hasTeen(19,1,1,1)
也都有效,您可以将 hasTeen()
的定义替换为:
public static boolean hasTeen(int... ages) {
for (int age : ages) {
if (isTeen(age)) {
return true;
}
}
return false;
}
这称为可变参数列表(或 varargs)语法。为了缩短这个函数的定义,你可以研究一些所谓的“函数式编程”语法,使用流,它能够更简洁地表达迭代值集合以检查条件(在这个case isTeen()
) 永远为真。
答案 1 :(得分:5)
您将列表引入到一个简单的任务中,使它变得过于复杂。以下方法将完成这项工作:
public static boolean isTeen(int n) {
return n >= 13 && n <= 19;
}