首页 > 解决方案 > 有人会在这种情况下解释“类型不匹配:无法从双精度转换为布尔值”吗?

问题描述

我正在处理的作业问题是,如果列表中的所有元素具有相同的值,则要求我返回 true,如果任何元素具有不同的值,则返回 false。我编写了以下代码来完成此操作:

    public static boolean allSame (double[] list) {
        double sameReference = list[0];
        for (int i = 1; i < list.length; i++) {
            if (list [i+1] = sameReference)
                continue;
            else return false; 
        return true;
        }
    }

它似乎运行良好,除了我在第 3 行遇到了一个错误:Type mismatch: cannot convert from double to boolean

有人可以解释一下从双精度布尔值转换的内容,以及我写的正在转换它的内容吗?我将如何解决这个错误?感谢您的帮助!

标签: javafor-loopif-statement

解决方案


首先,您需要使用==而不是=for equal

if (list [i+1] == sameReference)

其次,当 i 从 1 开始时,您不应该检查 list [i+1]。

第三,你不应该使用continue

public static boolean allSame (double[] list) {
    double sameReference = list[0];
    for (int i = 1; i < list.length; i++) {
        if (list [i] != sameReference)
            return false; 
    }
    return true;
}

你可以考虑先检查列表的大小。


推荐阅读