扩展这个问题,我接受了一个答案,该答案说在这种情况下
使用查找表或哈希映射 ,因为它是 处理多个条件 的更好的 构造 。
当前构造。
用于存储消息的类。
public class ProgressMessages
{
public static String msg1="Welcome here .....";
.
.
.
//around 100 more similar static variables.
}
条件并显示来自上述类的正确消息。
int x=calculatedVal1(m,n);
int y=calculatedVal2(o,q);
SimpleDateFormat formater=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d=new Date();
String s=formater.format(d);
try {
long d1 = formater.parse("2013-01-10 13:53:01").getTime();
long d2=formater.parse(s).getTime();
totaldays=Math.abs((d1-d2)/(1000*60*60*24));
} catch (ParseException e) {
e.printStackTrace();
}
if(totaldays<7&&x<20)
{
System.out.println("my message...1"+ProgressMessages.msg1);
}
else if(totaldays<7&&x>10&&y<20)
{
System.out.println("my message...2"+ProgressMessages.msg2);
}
....
//obvioulsy 100 more else-if's to display 100 messages.
我实际上想知道在这种情况下查找表有什么帮助?
应该如何在Java Hashmap / Hashtable等中实现它,如何具有优势?
- - 编辑 - -
我要去@assylias anwer,因为它更干净。但是,如果我使用Enums,则可以解决问题。
为了描述大局…
即消息列表就像…
1)“ Welcome” + nameOfUser +“您的成功率是” + succssRate +“%” +之前是+早期+“%”。
2)“哦是的..” + succssRate +“%” +从+早期+“%”改进。
3.)“现在您应该专注于” + exerCiseName。
我如何使用Enumeration来执行此操作,因为它具有固定的String数据。我可以构造不同的构造函数吗?带有汇编代码的任何示例如何回答问题?
我会用一个
Map<Criteria, Message> lookupTable;
Criteria
您编写的类在哪里(并覆盖equals()
和hashCode()
),代表选择消息的条件。
Message
也是您编写的类,它封装了实际消息,String
但还提供了一些设置变量的功能。
使用此解决方案,您必须在程序开始时初始化一次地图,并且始终可以像这样使用它:
Criteria criteria = ... // gather your criteria somehow
Message msg = lookupTable.getMessage(criteria);
// use your variable setting methods here
String message = msg.toString();
一、概述 从本文你可以学习到: 什么时候会使用HashMap?他有什么特点? 你知道HashMap的工作原理吗? 你知道get和put的原理吗?equals()和hashCode()的都有什么作用? 你知道hash的实现吗?为什么要这样实现? 如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办? 当我们执行下面的操作时: HashMap<String, Intege
问题内容: 我试图创建一个地图列表。在下面的代码中,我期望得到 但是,我只有 如何避免覆盖第一张地图?这是我的代码: 谢谢! ========================= 作为来自过程语言背景(SAS)的Java学习者,我花了很多时间学习和试验ArrayList,LinkedList,Map,LinkedMap等- 我无法使它正常工作。而且我不了解我的有限知识。现在,以下所有答案都很出色!他
这种差异让我很困惑: 为什么?
我试图使用java代码在Mysql数据库中创建一个新用户,但代码不起作用。这是一个数据库类,用于初始化数据库连接、创建用户、设置密码等。 这是我的主课。 但是当我在Mysql工作台中扫描任何新服务器时,它不会显示任何新服务器。 添加:-当我右键单击空白区域(Mysql Workbench)时,有一个选项“从剪贴板添加连接”(虽然我不知道它在做什么),它返回一个错误:-“无法从字符串“Give th
问题内容: 我想在CSS中使用大小均相同但高度不相同的元素来实现网格效果。我希望下面的元素始终位于底部元素的50px处,无论接下来是什么。 我尝试使用浮点数,但该错误。因此,我尝试使用Flex,但是它仍然无法满足我的要求。 问题答案: Try the new CSS Grid Layout 建立一个块级网格容器。该grid-auto-rows属性设置自动生成的行的高度。在此网格中,每行高度为50p
我想编写一个程序,在这个程序中,用户可以决定在什么对象中存储值。用户可以使用集合、列表和文件(例如,Txt、Xml)。我想写一个接口,在那里最终用户选择哪一个(“storage-”)对象并不重要,这样我就不必为每一个决策都编写相同的方法。 我应该如何为它制作一个接口?接口的方法是否足够合适?我还需要做什么/考虑什么?