gpt4 book ai didi

java - 替换开关结构的优雅方式

转载 作者:行者123 更新时间:2023-11-30 09:28:33 27 4
gpt4 key购买 nike

我生成了简单的随机数,我想根据生成的值执行不同的操作。我有 9 个不同的 Action 。我不能在 double 值上使用 switch 结构,也不能从 double 转换为 int 来使用switch 所以我注定要使用 if 结构吗?

if((rand > 0.0) && (rand < 1.0))
// case 1
else if...
// case 2
else if
// case 9

编辑:注意我的行为不是等概率的

最佳答案

创建一个 static TreeMap<Double,Integer>间隔限制映射到整数“案例标签”。使用 higerEntry 方法获取最接近随机生成的值的条目 double ,并在您的 switch 中使用结果值声明。

static final TreeMap<Double,Integer> limits = new TreeMap<Double,Integer>();
static {
limits.put(1.0, 0);
limits.put(3.5, 1);
limits.put(8.0, 2);
limits.put(10.3, 3);
}

这张图设置了五个区间:

  • -inf..1.0
  • 1.0..3.5
  • 3.5..8.0
  • 8.0..10.3
  • 10.3..+inf

现在在您的代码中您可以这样做:

double someNumber = ... // Obtain a random double
Map<Double,Integer> entry = higerEntry(someNumber);
switch (entry.getValue()) {
case 0: ... break;
case 1: ... break;
case 2: ... break;
case 3: ... break;
default: ... break;
}

关于java - 替换开关结构的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13973456/

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