【发布时间】:2014-02-02 11:09:06
【问题描述】:
我有一个字符串数组
String[] weekDays
weekDays 表示星期几。例如
{1, 2, 4} means Monday, Tuesday, Thusday
{2,5,6,7} means Tuesday, Friday, Saturday, Sunday
我有 7 个布尔值表示一周中的 7 天,并且必须根据 weekDays 设置 true 或 false。
我的代码
private static void setWeekDays(final Object object, final String[] weekDays) {
for (String day : weekDays) {
if( day.equalsIgnoreCase("1")) {
object.setMonday(true);
} else if( day.equalsIgnoreCase("2")) {
object.setTuesday(true);
} else if( day.equalsIgnoreCase("3")) {
object.setWednesday(true);
} else if( day.equalsIgnoreCase("4")) {
object.setThrusday(true);
} else if( day.equalsIgnoreCase("5")) {
object.setFriday(true);
} else if( day.equalsIgnoreCase("6")) {
object.setSaturday(true);
} else if( day.equalsIgnoreCase("7")) {
object.setSunday(true);
}
}
}
但它有很多 if else 语句,在执行此操作之前,我明确地将所有布尔值设置为 false。 有没有其他简单的方法来做同样的事情?有什么建议吗??
【问题讨论】:
-
+1 表示努力。例如,我想看看“setSunday”是做什么的。在我看来,那些“设置..”功能可能不必要地针对每一天。如果您可以通过“set...”方法传递字符串的值并且它执行 XYZ,那么您可以使用一行代码完成所有这些操作,而不是 if 或 switch。
-
数据库中基本上有7个字段,相对于7天来设置所有这些字段有7种方法。
-
那么七法就过分了。您应该能够根据传递的值和您的数据库架构的任何更多信息来隐式引用这些数据库字段。将您设置的方法的代码添加到 OP。
-
@DeeMac 对不起,我不明白你的意思。那么你能描述一下你提到的那个吗
-
你可以考虑使用 switch-case 并执行:Integer.parseInt(day);
标签: java arrays string if-statement logic