一.实例说明:
本实例根据用户输入的信息确定员工应该分配到哪个部门。实例中需要根据用户输入进行多条件判断,所以采用了switch语句。
二.关键技术:
本实例的关键技术在于switch多分支语句的使用,该语句只支持对常量的判断,而常量又只能是Java的基本数据类型,虽然在以后的JDK版本中可以对String类的字符串对象进行判断,但是就目前的项目的需求来说也有很多需要对字符串进行多条件判断的。本实例采取的做法是对字符串的哈希码进行判断,也就是把String类的hashCode()方法返回值作为Switch语法的表达式,case关键字之后跟随的是各种字符串常量的哈希码整数值。
三.设计过程:
创建Example类,在该类的主方法中创建标准输入流的扫描器,通过扫描器获取人事部门输入的姓名与应聘编程语言,然后根据每种语言对应的哈希码来判断分配部门。
四.实例:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入员工姓名:");
String name = scan.nextLine(); //接受员工姓名
System.out.println("请输入新员工应聘的编程语言:");
String language = scan.nextLine(); //接收员工应聘的编程语言
//根据编程语言确定员工分配的部门
switch(language.hashCode()){
case 3254818: //Java的哈希码
case 2301506: //Java的哈希码
case 2269730: //Java的哈希码
System.out.println("员工"+name+"被分配到Java程序开发部门。");
break;
case 3104: //C#的哈希码
case 2112: //C#的哈希码
System.out.println("员工"+name+"被分配到C#项目维护组。");
break;
case -709190099: //ASP.NET的哈希码
case 955463181: //ASP.NET的哈希码
case 9745901: //ASP.NET的哈希码
System.out.println("员工"+name+"被分配到ASP.NET程序测试部门。");
break;
default:
System.out.println("本公司不需要"+language+"语言的程序开发人员。");
}
}
}
运行结果如下图所示:
注意:
在现实开发中,要灵活使用switch语法,在switch语法中,每个case关键字可以作为一个条件分支,但是对于多个条件采取相同业务处理的情况,可以把多个case分支关联在一起,省略它们之间的break语句,而在最后一个相同的case分支中实现业务处理并执行break语句,就像本实例中应用的一样。