【问题标题】:If-statement with int: Java believes i want to convert to boolean带 int 的 if 语句:Java 认为我想转换为布尔值
【发布时间】:2020-05-28 22:55:11
【问题描述】:

我正在一个类中编写一个方法,该方法从 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;
    }

【问题讨论】:

  • 永远记住= != ==
  • 记得把答案标记为正确的

标签: java int boolean


【解决方案1】:

评估两个ints 的正确方法是==,而不是=

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],这不是条件

【讨论】:

    【解决方案2】:

    请注意小细节

    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. 
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-17
        • 2015-09-27
        • 2022-08-19
        • 2012-02-25
        • 1970-01-01
        • 2020-02-05
        • 2015-11-09
        • 2013-05-27
        相关资源
        最近更新 更多