【发布时间】:2011-11-21 07:37:32
【问题描述】:
我知道这听起来很糟糕,但在我的 java 程序中,我有大约 100 个 if-else 语句,所有这些语句都包含 3 个变量,这些变量必须对那些 if-else 块保持唯一,1 是一个标志,用于知道第一次是什么时候曾经碰到过那个 if-else 块,另外两个都是字符串,并且是临时变量,保存上次通过 if-else 块时使用的数据,因此可以将它与这次运行的数据进行比较,抱歉,如果这听起来很草率,我讨厌有这么多 if-else 块的想法,但现在我更关心变量,因为如果我为每个块创建 3 个变量,那就是额外的 300 个变量。关于我可以实施以减少变量数量的任何建议,我的一个想法是为所有标志使用 1 个数组,然后为每个 if-else 块保存 2 个字符串的 2d 数组。谢谢牛肉。
已编辑: 显示前 2 个 if-else 块的示例,所有其他块在内部都有相同的代码,只是标志和临时变量 ex 的名称不同。 ac101Flag, tempAC101Start, tempAC101End
// AC 101
if (room.equals("FEB 2009") || room.equals("FEB 2011") ||room.equals("FEB 2013") || room.equals("FEB 2015") || room.equals("FEB 2017") ||
room.equals("FEB 2021") || room.equals("FEB 2023") || room.equals("FEB 2025") || room.equals("FEB 2027") || room.equals("FEB 2029")) {
instanceNum = 4;
devID = 130200;
if (ac101Flag == false) {
Delete();
Insert();
ac101Flag = true;
tempAC101Start = Double.parseDouble(finalStart.substring(0, 5).replace(':', '.'));
tempAC101End = Double.parseDouble(finalEnd.substring(0, 5).replace(':', '.'));
}
//Insert();
else if (tempAC101Start <= (Double.parseDouble(finalStart.substring(0, 5).replace(':', '.'))) && tempAC101End >= Double.parseDouble(finalEnd.substring(0, 5).replace(':', '.'))) {
}
else
{
Insert();
tempAC101Start = Double.parseDouble(finalStart.substring(0, 5).replace(':', '.'));
tempAC101End = Double.parseDouble(finalEnd.substring(0, 5).replace(':', '.'));
}
}
// AC 102
else if(room.equals("FEB 1130")) {
instanceNum = 4;
devID = 130400;
if (ac102Flag == false) {
Delete();
Insert();
ac102Flag = true;
tempAC101Start = Double.parseDouble(finalStart.substring(0, 5).replace(':', '.'));
tempAC101End = Double.parseDouble(finalEnd.substring(0, 5).replace(':', '.'));
}
//Insert();
else if (tempAC101Start <= (Double.parseDouble(finalStart.substring(0, 5).replace(':', '.'))) && tempAC101End >= Double.parseDouble(finalEnd.substring(0, 5).replace(':', '.'))) {
}
else
{
Insert();
tempAC101Start = Double.parseDouble(finalStart.substring(0, 5).replace(':', '.'));
tempAC101End = Double.parseDouble(finalEnd.substring(0, 5).replace(':', '.'));
}
}
【问题讨论】:
-
显示该代码的前几个 if/else 块。
-
@nos 参考编辑示例代码
标签: java arrays optimization variables reduce