java中可以定义范围内的变量吗

问题描述 投票:0回答:1

使用变量时,您可以定义或指定该变量为 1-10 等范围内的所有数字吗?我正在使用 Switch 语句,并希望将其中一个 case 变量分配给 100-1000 之间的所有变量,而无需编写 900 个 case 行。

java variables switch-statement backend
1个回答
0
投票

如果要对范围使用

switch
语句,通常需要将范围映射到特定值 - 它们可以是离散整数,但在 Java 中使用
enum
是有意义的,因为
enum
定义可以有一个方法来进行映射。

enum
可以是公共的,但如果您不需要在其他地方使用它们,它们也可以在类中是私有的。

例如:

public class Something {
    private static enum RangeType {
        LOW(0, 10),
        MID(10, 20),
        HIGH(20, 30);

        private final int lowRange;
        private final int highRange;

        RangeType(int lowRange, int highRange) {
            this.lowRange = lowRange;
            this.highRange = highRange;
        }

        public RangeType getRange(int val) {
            for (RangeType rt : RangeType.values()) {
                if (rt.lowRange < val && val > rt.highRange) {
                    return rt;
                }
            }
            return null;
        }
    }

    public int doSomething(int s) {
        int newS;

        RangeType sRange = RangeType.getRange(s);
        switch (sRange) {
        case LOW:
            newS = 15;
            break;
        case MID:
            newS = 3;
            break;
        case HIGH:
            newS = 9;
            break;
        default:
            newS = 0;
        }
        return newS;
    }

}

使用枚举可能有些过大,但它确实说明了如何完成映射。

© www.soinside.com 2019 - 2024. All rights reserved.