所以,我知道你不能在case语句中使用变量。我希望有人能够指出我的代码作为替代品是非常有效的。 (例如,我可以做一堆ifs)。Java在case语句中使用变量
情况是我有一个对象数据的数组,我想遍历该数组。数组中的位置由如下所示的名称给出(int ... ordinal语句)。基本上我必须为数组的某些成员(如果它们是离散数据,如C_VENT_RATE)分配生成'结果'对象。我可以很容易地看到这一点的唯一方法是做一堆如if(如quals(pr_int))的ifs。
ArrayList<String[]> rawEKGs = ekgFile.getForMrno(docInfo.getMedicalRecordNumber());
for (String[] parts : rawEKGs) {
for (int i=0; i< parts.length; i++)
{
Result result = docInfo.getResult();
boolean process = true;
final int vent_rate = UncEKG.COL_NAMES.C_VENT_RATE.ordinal();
int art_rate = UncEKG.COL_NAMES.C_ART_RATE.ordinal();
int pr_int = UncEKG.COL_NAMES.C_PR_INTERVAL.ordinal();
int qrs_dur = UncEKG.COL_NAMES.C_QRS_DURATION.ordinal();
int qt_qtc = UncEKG.COL_NAMES.C_QT_QTC.ordinal();
int prt = UncEKG.COL_NAMES.C_PRT_AXES.ordinal();
switch(i) {
case : // something
break;
default: process = false;
}
在早期版本的Java语言中,case语句的值必须是文字/常量整数。我知道限制已经在更新的版本中被放宽,但我不知道细节。 –
如果您知道可能的案例值范围很窄(可能是几十个),您可以使用映射数组来映射您的索引值和您定义的“常量”。然而,不确定是否值得付出努力,而不是仅仅使用if梯子。 –
所以你知道数组中的数据的索引,你必须处理(从枚举的序数值)?为什么你不能通过该索引访问数据:'String data = parts [i]; doSomeThingWithData(数据); ......而不是遍历整个数组,并且如果你发现一个有趣的部分,就要采取行动。 – Pyranja