gpt4 book ai didi

Java 在 case 语句中使用变量

转载 作者:行者123 更新时间:2023-11-29 06:37:00 24 4
gpt4 key购买 nike

所以,我知道您不能在 case 语句中使用变量。我希望有人能指出我作为替代品相当有效的代码。 (例如,我可以做一堆如果)。

情况是我有一个对象数据数组,我想遍历该数组。数组中的位置由名称给出,如下所示(int...ordinal 语句)。基本上我必须为数组的某些成员分配生成“结果”对象(如果它们是离散数据,例如 C_VENT_RATE)。我可以轻松完成此操作的唯一方法是做一堆 ifs,例如 if (i.equals(pr_int))。

  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;
}

最佳答案

因为您已经有了一个枚举,您可以尝试使用 EnumMap 将枚举映射到命令的 Command 模式。

每个 Command 实例都将与您的一个 case 语句具有相同的逻辑。

EnumMap<UncEKG.COL_NAMES, Command> map = ...
//values is in ordinal order
//pulled out for performance reasons
UncEKG.COL_NAMES[] names = UncEKG.COL_NAMES.values();
for (String[] parts : rawEKGs) {
for (int i=0; i< parts.length; i++ ){
map.get(names[i]).execute();
}
}

关于Java 在 case 语句中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19125596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com