java 表驱动_关于表驱动法的思考

目前在学习软件构造课程中表驱动法的内容,了解后觉得它在处理涉及多个if-else问题时十分有用,下面提供一些简单的我对表驱动法的理解以及其在java中应用的小例子。

表驱动法,顾名思义,是用查表方式来获取数据,涉及到了表的结构。表是一种在很多语言中常见的数据结构,比如在java中我们使用map键值对集合的形式来定义表。关于java中map的用法如下:

创建:

Type map= newHashMap();

删除:

map.clear();

添加键值对:

map.set(key,value);

取出谋键对应的值:

map.get(key)

循环遍历取出所有键值对:for(Object obj : map.keySet()){

map.get(obj );

}

表驱动法查找方式包括直接访问,索引访问与阶梯访问。

直接访问的方式是通过下标直接找到对应的数据内容,这种方式一般只需要使用数组这种数据结构。举个简单的例子如下:

static String []week = {"星期一","星期二","星期三","星期四","星期五","星期六","星期七"};int daytime = 3;

String dayName= week[daytime--];

System.out.print(dayName);

//dayName = "星期三";

索引访问的方式适用于我们日常生活查找简单的表的情景,查找的条件不直观。比如我们要通过程序模拟一本汉语字典,查找拼音为"hao"的汉字,拼音"hao"是字符串,没有字典页码的数字形式直观,无法作为数组下标,在java中这时使用map比较合适,将拼音作为键,值为对应的汉字等等。下面是另一个简单的例子:

static String []week = {"星期一","星期二","星期三","星期四","星期五","星期六","星期七"};static String []plan = {"学习课程","练习棒球","钢琴演奏","户外写生","与家人野餐","外出购物","整理房间"};static Map dayplan = newHashMap();for(int i =0;i

dayplan.put(week[i],plan[i]);

}

String Wednesdayplan=dayplan.get("星期三");

System.out.print(Wednesdayplan);//Wednesdayplan = "钢琴演奏"

最后是阶梯访问,也称为分段访问,是通过对某表中数据分段,根据分段上限再进行查找的过程。应用在我们日常生活中比较常见的是绩点查询。比如你某门课分数为82,你想查询这门课考试成绩的GPA,你将会在两张表中查询。首先你需要再一张绩点对应分数上限的表中查找最接近你分数的分数上限:84,然后通过上限85分查找到对应的绩点为3.3。以下为源代码:

static int []Range = {59,64,74,84,89,100};static Double []GPA = {0.,1.,2.,3.3,3.7,4.};double gpa = 0;int grades = 82;for(int i=0;i

gpa=GPA[i];break;

}

}

system.out.print(gpa);//gpa = 3.3

That's all~Thank you!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的驱动是一种常见的编程技术,它可以通过预先定义的数据来简化代码。下面是一些示例,展示了如何使用驱动技术来处理各种类型。 1. 处理字符串类型 示例代码: ```java Map<String, String> table = new HashMap<>(); table.put("hello", "world"); table.put("goodbye", "cruel world"); String input = "hello"; String output = table.get(input); System.out.println(output); // 输出:world ``` 2. 处理枚举类型 示例代码: ```java enum Color { RED, GREEN, BLUE } Map<Color, String> table = new HashMap<>(); table.put(Color.RED, "#FF0000"); table.put(Color.GREEN, "#00FF00"); table.put(Color.BLUE, "#0000FF"); Color input = Color.RED; String output = table.get(input); System.out.println(output); // 输出:#FF0000 ``` 3. 处理数字类型 示例代码: ```java Map<Integer, String> table = new HashMap<>(); table.put(1, "one"); table.put(2, "two"); table.put(3, "three"); int input = 2; String output = table.get(input); System.out.println(output); // 输出:two ``` 4. 处理自定义类型 示例代码: ```java class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } Map<String, Person> table = new HashMap<>(); table.put("Alice", new Person("Alice", 25)); table.put("Bob", new Person("Bob", 30)); String input = "Bob"; Person output = table.get(input); System.out.println(output.getName() + " is " + output.getAge() + " years old."); // 输出:Bob is 30 years old. ``` 这些示例展示了如何使用Java中的驱动技术来处理不同类型的数据。无论是字符串、枚举、数字还是自定义类型,驱动技术都可以帮助我们简化代码并提高代码的可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值