Guava可以在“介于”之间建立两个条件的范围。

发布于 2025-01-22 17:12:38 字数 971 浏览 0 评论 0原文

我正在努力制定范围条件以评估价值。
对于每个符号检查值,我已经制定了开关条件,以生成句子以灵活地评估值。

低于用于检查值的代码有效吗? (例如300< = value< = 500)。
我已经尝试了几次,但是无法制作范围。
(如果这些方法无效,我会将它们更改为.clate等。)

谢谢!

public void symbolToRange(RangeSet<Integer> rangeSet, String symbol, int targetNum) {
    switch (symbol) { // <, <=, =, >=, >
        case ">":
            // targetNum < value
            rangeSet.add(Range.greaterThan(targetNum));
            break;
        case ">=":
            // targetNum <= value
            rangeSet.add(Range.atLeast(targetNum));
            break;
        case "<":
            // targetNum > value
            rangeSet.add(Range.lessThan(targetNum));
            break;
        case "<=":
            // targetNum >= value
            rangeSet.add(Range.atMost(targetNum));
            break;
        case "=":
            rangeSet.add(Range.singleton(targetNum));
            break;
    }
}

i'm struggling with making range conditions to evaluate values.
For checking values per symbol, I have made switch condition to generate sentence for evaluating values flexibly.

Is below code valid for checking values? (e.g. 300 <= value <= 500).
I have tried a few times, but it was not possible to make range.
(If those method are not effective, i would change them to .closed etc.)

Thanks!

public void symbolToRange(RangeSet<Integer> rangeSet, String symbol, int targetNum) {
    switch (symbol) { // <, <=, =, >=, >
        case ">":
            // targetNum < value
            rangeSet.add(Range.greaterThan(targetNum));
            break;
        case ">=":
            // targetNum <= value
            rangeSet.add(Range.atLeast(targetNum));
            break;
        case "<":
            // targetNum > value
            rangeSet.add(Range.lessThan(targetNum));
            break;
        case "<=":
            // targetNum >= value
            rangeSet.add(Range.atMost(targetNum));
            break;
        case "=":
            rangeSet.add(Range.singleton(targetNum));
            break;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑叹一世浮沉 2025-01-29 17:12:38

我会返回范围,而不是添加到rangeset上,然后在无效的符号上抛出异常:

public static Range<Integer> symbolToRange(String symbol, int targetNum) {
    switch (symbol) { // <, <=, =, >=, >
        case ">":
            // targetNum < value
            return Range.greaterThan(targetNum);
        case ">=":
            // targetNum <= value
            return Range.atLeast(targetNum);
        case "<":
            // targetNum > value
            return Range.lessThan(targetNum);
        case "<=":
            // targetNum >= value
            return Range.atMost(targetNum);
        case "=":
            return Range.singleton(targetNum);
        default:
            throw new IllegalArgumentException("Invalid symbol: " + symbol);
    }
}

除这些更改外,您的功能似乎还不错。

I would have the function return a Range instead of adding to a RangeSet, and throw an exception on an invalid symbol:

public static Range<Integer> symbolToRange(String symbol, int targetNum) {
    switch (symbol) { // <, <=, =, >=, >
        case ">":
            // targetNum < value
            return Range.greaterThan(targetNum);
        case ">=":
            // targetNum <= value
            return Range.atLeast(targetNum);
        case "<":
            // targetNum > value
            return Range.lessThan(targetNum);
        case "<=":
            // targetNum >= value
            return Range.atMost(targetNum);
        case "=":
            return Range.singleton(targetNum);
        default:
            throw new IllegalArgumentException("Invalid symbol: " + symbol);
    }
}

Other than those changes your function seems fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文