如何简化此程序以检查青少年年龄?

xurqigkl  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(305)

我对java相当陌生,我正在努力改进我的代码。有没有人建议简化这个检查青少年号码(13-19)是否被传递到方法中的程序?或者是否有更好的方法来构建它。谢谢

  1. import java.util.Arrays;
  2. import java.util.List;
  3. public class TeenNumberChecker {
  4. public static void main(String[] args) {
  5. System.out.println(hasTeen(1,1,13));
  6. System.out.println(isTeen(14));
  7. }
  8. public static boolean hasTeen(int a, int b, int c){
  9. List<Integer> teenValues = Arrays.asList(13, 14, 15, 16, 17, 18, 19);
  10. return (teenValues.contains(a)) || (teenValues.contains(b)) || (teenValues.contains(c));
  11. }
  12. public static boolean isTeen(int d){
  13. List<Integer> teenValues = Arrays.asList(13, 14, 15, 16, 17, 18, 19);
  14. return (teenValues.contains(d));
  15. }
  16. }
6kkfgxo0

6kkfgxo01#

像这样的事情怎么样?只是检查一个数字条件?这也要快得多(考虑到要检查的年龄太少,在这种情况下这并不重要)。

  1. public static boolean hasTeen(int a, int b, int c){
  2. return isTeen(a) || isTeen(b) || isTeen(c);
  3. }
  4. public static boolean isTeen(int d){
  5. return d >= 13 && d <= 19;
  6. }

减少或消除代码重复是一种很好的做法,例如通过 hasTeen() 依靠 isTeen() ,因此该条件只需写入一次。
如果你愿意 hasTeen() 任意地接受许多论点,以便。 hasTeen(19)hasTeen(19,1,1,1) 这两种方法都有效,您可以替换 isTeen() 与:

  1. public static boolean hasTeen(int... ages) {
  2. for (int age : ages) {
  3. if (isTeen(age)) {
  4. return true;
  5. }
  6. }
  7. return false;
  8. }

这称为变量参数列表(或varargs)语法。为了缩短此函数的定义,您可以研究一些所谓的“函数式编程”语法,使用streams,它能够更简洁地表达在值集合上迭代以检查条件(在本例中 isTeen() )这永远是真的。

展开查看全部
mdfafbf1

mdfafbf12#

通过在简单任务中引入列表,您将其过度复杂化。以下方法将完成此工作:

  1. public static boolean isTeen(int n) {
  2. return n >= 13 && n <= 19;
  3. }

相关问题