zoukankan      html  css  js  c++  java
  • Java实例——为新员工分配部门

    技术关键:
    1、Switch多分支语句的使用,该语句只支持对常量的判断;
    2、对字符串的哈希码进行判断,也就是把String类的hashCode()方法返回值作为Switch语法的表达式,case关键字之后跟随的是各种字符串常量的哈希码整数值。
     
    知识点:
    哈希码
        在Java中,哈希码代表对象的特征。可以根据的自己的需求,采用不同的算法产生的一个Int型数字。
    几个常用的哈希码的算法:
        1、Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。
        2、String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串所在的空间相同,返回的哈希码也相同。
        3、Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值。
     
    实现过程:
     1 package test;
     2 import java.util.Scanner;
     3 public class Example {
     4     public static void main(String[] args) {
     5         Scanner scan = new Scanner(System.in);
     6         System.out.println("请输入新员工的姓名:");
     7         String name = scan.nextLine();        // 接收员工名称
     8         System.out.println("请输入新员工应聘的编程语言:");
     9         String language = scan.nextLine();  // 接收员工应聘的编程语言
    10         
    11         // 根据编程语言确定员工分配的部门
    12         switch (language.hashCode()) {
    13             case 3254818:                     // java的哈希码
    14             case 2301506:                     // Java的哈希码
    15             case 2269730:                     // JAVA的哈希码
    16                 System.out.println("员工"+name+"被分配到Java程序开发部门。");
    17                 break;
    18             case 3104:                        // c#的哈希码
    19             case 2112:                        // C#的哈希码
    20                 System.out.println("员工"+name+"被分配到C#项目维护组。");
    21                 break;
    22             case -709190099:                  // asp.net的哈希码
    23             case 955463181:                   // Asp.net的哈希码
    24             case 9745901:                     // ASP.NET的哈希码
    25                 System.out.println("员工"+name+"被分配到Asp.net程序测试部门。");
    26                 break;
    27             default:
    28                 System.out.println("本公司不需要" + language + "语言的程序开发人员。");
    29         }
    30     }
    31 }
     
    依照书中所给代码敲入后,一开始我不能理解switch语句中case的值是哪里来的,百度后才明白,原来是先将各种语言罗列出不同的写法,比如java有JAVA、java、Java这三种写法,通过hashcode方法提前获取哈希码的值再注释掉,而书中并没有给出这一过程。注释掉的代码如下:
    System.out.println("java".hashCode());
    System.out.println("Java".hashCode());
    System.out.println("JAVA".hashCode());
    System.out.println("C#".hashCode());
    System.out.println("c#".hashCode());
    System.out.println("asp.net".hashCode());
    System.out.println("Asp.net".hashCode());
    System.out.println("ASP.net".hashCode());
    通过运行,我们可以获取各种语言不同写法所对应的哈希码,并将其放到case中进行后续判断。
     
    该实例中的扩展练习是为学生分配兴趣小组,我们可以依据前面为员工分配部门为例,先求出不同兴趣小组的哈希码,比如足球、田径、文学等等,然后放到Switch语句中进行匹配判断即可。
  • 相关阅读:
    npm、webpack、vue-cli 快速上手版
    jquery 显示和隐藏的三种方式
    jquery好友面板切换
    jquery 事件冒泡
    jquery QQ微博
    C# Thread 参数
    WPF Dispatcher的使用
    UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
    HDU 2795 Billboard (线段树单点更新 && 求区间最值位置)
    HDU 1394 Minimum Inversion Number (树状数组 && 规律 && 逆序数)
  • 原文地址:https://www.cnblogs.com/luckyliulin/p/8972316.html
Copyright © 2011-2022 走看看