繁体   English   中英

带有 int 的 if 语句:Java 相信我想转换为布尔值

[英]If-statement with int: Java believes i want to convert to boolean

我正在一个类中编写一个方法,该方法从 main 中检索一个数组和一个设置值。 目的是定位该给定值的位置并将其返回给main(如果该值在数组中不存在,则返回-1)。 我的问题:当我运行我的代码时,Java 说:int 不能转换为布尔值。 并将我指向下面代码中的 if 语句。 我尝试将“=”-符号切换为“>=”,然后它运行顺利(但是它不像它应该的那样工作......)。 谁能看出为什么它认为我想将其转换为布尔值?

    public static int containsIntElement(int[] A, int val)
    {
        int pos = -1;
        for (int i = 0; i < 10; i++)
        {
            if(A[i] = val)
            {
                pos = i;
            }
        }
        return pos;
    }

计算两个int的正确方法是== ,而不是=

public static int containsIntElement(int[] A, int val)
    {
        int pos = -1;
        for (int i = 0; i < 10; i++)
        {
            if(A[i] == val)   //Note this
            {
                pos = i;
            }
        }
        return pos;
    }

=运算符用于赋值,所以在

if(A[i] = val) 

您将值val分配给变量A[i] ,这不是条件

请注意小细节

if(A[i] = val) // is incorrect .. in some programming language it is correct. but boy o boy it would make you cry.
if(A[i] == val) // is correct. 

您在打算使用== (比较运算符)的地方使用= (赋值运算符)。

您的 if 所做的是:将val分配给A[i]然后尝试(并失败)从A[i]生成逻辑值

(命名约定也说A应该是小写的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM