Java数据结构与算法之年龄判断

分手后的思念是犯贱 2022-08-08 19:35 308阅读 0赞

一道题,很巧妙。废话不多说,直接上源码。

  1. /* * 需求:一个网站有一个功能,当你填入你的年龄的时候,我就能自动判断你是哪个年龄段 * 那么我们就写这样一个功能:键盘输入年龄,请打印出是哪个年龄段 * 0-9岁,儿童 * 10-19岁,少年 * 20-29岁,青年 * 30-39岁,壮年 * 40-49岁,中年 * 50-59岁,中老年 * 60岁以上,老年 * 尽量优化您的代码 */
  2. /* * 分析: * 此题看似简单,刚接触if--else结构就可以写出相对应的代码。 * 但关键在于结尾的"优化"二字。 */
  3. package com.wayne.example;
  4. import java.util.Scanner;
  5. public class JudgeAge {
  6. public static void main(String[] args) {
  7. String[] strAge = { "儿童", "少年", "青年", "壮年", "中年", "中老年", "老年" };
  8. System.out.println("请输入你的年龄:");
  9. Scanner sc = new Scanner(System.in);
  10. int age = sc.nextInt();
  11. // 最传统的做法如下:
  12. // if(age >=0 && age <= 9){
  13. // System.out.println("儿童");
  14. // }else if(age >= 10 && age <= 19){
  15. // System.out.println("少年");
  16. // }else if(age >= 20 && age <= 29){
  17. // System.out.println("青年");
  18. // }else if(age >= 30 && age <= 39){
  19. // System.out.println("壮年");
  20. // }else if(age >= 40 && age <= 49){
  21. // System.out.println("中年");
  22. // }else if(age >= 50 && age <= 59){
  23. // System.out.println("中老年");
  24. // }else{
  25. // System.out.println("老年");
  26. // }
  27. // 但此法的每次都会拿age去和判断值去比较,比较耗费时间
  28. // 稍微进阶的一些写法
  29. // if(age>=60)
  30. // System.out.println("老年");
  31. // else if(age>=50)
  32. // System.out.println("中老年");
  33. // else if(age>=40)
  34. // System.out.println("中年");
  35. // else if(age>=30)
  36. // System.out.println("壮年");
  37. // else if(age>=20)
  38. // System.out.println("青年");
  39. // else if(age>=10)
  40. // System.out.println("少年");
  41. // else
  42. // System.out.println("儿童");
  43. // 此法相比之前的方法,比较次数会减少一些,但是如果是儿童的话,还是需要全部比较之后才能得出结论。
  44. // 继续优化
  45. // 分析:
  46. // 通过分析条件,发现其分布区间是一个等间隔的区间,
  47. // 故可以在每一个区间内任意一个数,除以区间间隔,会得到如下的数字
  48. // 0 1 2 3 4 5 6
  49. // 此可以认为是数组的角标
  50. // { "儿童", "少年", "青年", "壮年", "中年", "中老年", "老年" };
  51. // 故通过查表的方式获得对应的值。
  52. // 具体实现如下:
  53. int indexStrAge = age / 10;
  54. if (indexStrAge > 6)
  55. indexStrAge = 6;
  56. System.out.println("您是一个" + strAge[indexStrAge]);
  57. }
  58. /* * 总结: * 以后对于此种等间隔或者可以转化为等间隔的事物,均可以采用类似思路去做。 * 用存储的空间,来换执行算法的运行时间。 */
  59. }

发表评论

表情:
评论列表 (有 0 条评论,308人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构算法算法分析

    算法的五个重要特征:有穷性,确定性,可行性,输入,输出。 输入,是指算法具有零个或多个输入。 输出,是指算法至少有一个或多个输出。 有穷性,是指算法在执行有限的步骤之后,