java - 带有 "and"/"or"JAVA 的多变量 Switch 语句

标签 java switch-statement

我是编码新手,正在编写游戏,每个玩家都有四个统计数据:strcondex、和int。对于特定种族的玩家,用户选择两个增加 2 的统计数据,而另外两个统计数据则减少 2。目前,我正在根据选择增加的统计数据来确定应减少哪些统计数据。 stat1 是用户增加的第一个统计数据的名称,stat2 是第二个统计数据的名称,这两个统计数据取自用户输入。这就是我目前将其作为 if/else if/else 的方式。我想知道是否可以轻松地将其编写为 switch 语句。

if((stat1.startsWith("con") && stat2.startsWith("dex"))||(stat1.startsWith("dex") && stat2.startsWith("con")))
{
    addStat("int",-2);
    addStat("str",-2);
}
else if((stat1.startsWith("con") && stat2.startsWith("int"))||(stat1.startsWith("int") && stat2.startsWith("con")))
{
    addStat("dex",-2);
    addStat("str",-2);
}
else if((stat1.startsWith("con") && stat2.startsWith("str"))||(stat1.startsWith("str") && stat2.startsWith("con")))
{
    addStat("dex",-2);
    addStat("int",-2);
}
else if((stat1.startsWith("dex") && stat2.startsWith("int"))||(stat1.startsWith("int") && stat2.startsWith("dex")))
{
    addStat("con",-2);
    addStat("str",-2);
}
else if((stat1.startsWith("dex") && stat2.startsWith("str"))||(stat1.startsWith("str") && stat2.startsWith("dex")))
{
    addStat("int",-2);
    addStat("con",-2);
}
else if((stat1.startsWith("str") && stat2.startsWith("int"))||(stat1.startsWith("int") && stat2.startsWith("str")))
{
     addStat("dex",-2);
     addStat("con",-2);
}

最佳答案

不,不是作为 switch 语句。但仅使用集合和循环就可以更加简洁:

Set<String> allStats = new HashSet<>(Arrays.asList("dex", "str", "con", "int"));
Set<String> increasedStats = new HashSet<>();
// TODO: let the user choose the stats to increase, 
// and store them in increadedStats

// then decrease the two other ones:
for (String stat : allStats) {
    if (!increasedStats.contains(stat)) {
        addStat(stat, -2);
    }
}

关于java - 带有 "and"/"or"JAVA 的多变量 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449455/

相关文章:

c++ - 将用户输入验证为 int 时陷入无限循环

java - 如何将值从 jtextfield 复制到 jspinner

java - Liquibase 不会从changeSet 内的类路径加载*.sql

java - 添加 notifyDataSetChanged() 后检测到不一致错误

java - 在 REST API 请求中包含 URL 地址时 RestTemplate 出现问题

javascript - 只除以特定字符串出现的次数,而不是总长度(Javascript)?

java - KeyAffinityService 的 NullPointerException

javascript - 向 onClick 事件的脚本添加额外的情况

java - 将 Ruby 翻译成 Java : Does Java have a construct that is close to the Ruby switch statement

java - 切换问题,阵列打印