验证条件语句中范围的更快方法?

Quicker way to validate ranges in conditional statements?

我目前正在做一些需要很多整数范围的事情(为了练习,我是初学者)。现在这样做基本上是常识:

else if (age >= 2 && age <=3){
    System.out.println("You're a toddler!");

但是,我觉得必须有一种更快的方法来为条件语句创建范围,我无法想象这是最快的方法。如果没有,那没关系。如果有更快的方法,我只是不想继续这样做。谢谢

如果您正在映射覆盖整个范围的值,您可以通过控制它们的顺序来使用单个比较,并且 return 来自函数的值作为跳过以后比较的方法:

public String ageDescription(short age){
    if (age < 2){
        return "less than 2";
    }

    if (age <= 3){
        // we know age >= 2 since we didn't return
        return "more than 2 but less than or equal to 3";
    }
    // no comparison for last value
    return "You're older than 3";
}

但是,您目前的操作方式完全没问题。

您可以为此创建一个class,例如:

public class Range{
    int min;
    int max;
    String msg;
    public Range(int min, int max, String msg){
        this.min = min;
        this.max = max;
        this.msg = msg;
    }
    public boolean isInRange(int val){
        return val >= min && val <= max;
    }

    public void showMessage(){
        System.out.println(msg);
    }
}

这是您可以使用它的方式:

Range range1 = new Range(2,3,"You're a toddler!");
Range range2 = new Range(4,8,"....");
Range range3 = new Range(9,12,"....");
List<Range> ranges = new ArrayList<>(Arrays.asList(range1,range2,range3));
int val = ...;
for(Range range:ranges){
    if(range.isInRange(val)){
        range.showMessage();
    }
}

我不确定这是否使它更容易,但它肯定使它更动态,它使在运行时 add/remove 范围更容易。