在此查找数字序列

时间:2014-09-22 05:56:35

标签: java design-patterns numbers sequence

我想知道是否有办法找到数字模式,因为目前我正在使用它。

    private int getRakeConfigForPatch(int patchId) {
    switch (patchId) {
    case 8550:
        return 708;
    case 8551:
        return 709;
    case 8552:
        return 710;
    case 8553:
        return 711;
    case 8554:
        return 712;
    case 8555:
        return 713;
    case 8556:
        return 714;
    case 8557:
        return 715;
    }
    return -1;
}

我想知道如何弄清楚这个序列的模式,因为我至少有一百个案例要添加到相同的模式中,我真的不想要额外的200行代码,如果我不需要它。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

在我看来,你可以这样做:

private int getRakeConfigForPatch(int patchId) {
    if (patchId >= 8550 && patchId <= 8557) {
        return patchId - 8550 + 708; // or patchId - 7842 for short, but less clear
    }
    return -1;
}

当然,如果你有更大的范围,你需要更改if测试,如果你的进展有差距,你可以进行多次测试。

答案 1 :(得分:3)

private int getRakeConfigForPatch(int patchId) {

  return patchId - 7842;
 }