扩展这个问题,我接受了一个答案,它说在这种情况下使用查找表或哈希图,因为它是处理多个条件的更好构造。
当前构造。
类来存储消息。
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+"your success rate is"+ succssRate +"%"+ earlier it was +earlier +"%".
2) "Oh yes.."+ succssRate +"%"+ improved from +earlier +"%".
3.) "Now you should focus on "+exerCiseName.
How could I do this using Enumeration as it has fixed String data. Could I make different constructors? How any example with the edit code to assylas answer?