【问题标题】:how do I check if each value of an array is between a range if the array is a non primitive type如果数组是非原始类型,如何检查数组的每个值是否在范围之间
【发布时间】:2022-02-03 03:51:49
【问题描述】:

基本上,我想检查骰子的每个值。

如果该值介于 1 和 6 之间(包括 1 和 6),那么我想将此类值放入数组计数中。

问题在于 dice 是一个对象,而不是我之前声明的原语,因此 >= 运算符不起作用。

    public int[] getValueCount() {
        int[] count;
        for (int i = 0; i < dice.length; ++i) {
        if ((dice[i] >= 0) && (dice[i] <= 6)) {
                count[i] = dice[i];
            }
        }
        return count;
    }

【问题讨论】:

标签: java arrays


【解决方案1】:

很遗憾地通知您,Java 不像其他语言(如 C++)那样支持运算符重载。这是设计者做出的决定,希望能让语言更易于使用。

但是,您可以实施其他可用选项。

对您来说效果很好的一个选项可能是实现 Comparable 接口。

import java.lang.Comparable;

public class Dice implements Comparable<Dice> {

    /* Code */

    @Override
    public int compareTo(Dice otherDice) {
        return this.value - otherDice.value;
    }
}

https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html

好处是你可以用它应用很多东西,比如使用 Comparator 接口:

Comparator<Dice> compareByValue = Comparator.comparing(Dice::getValue);

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    在 Dice 类 '.greaterOrEqual(x)' 中实现您自己的比较方法,或者直接访问 Dice 类上的数据并比较该值

    【讨论】:

    • 如何直接比较数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多