java将int变量识别为布尔字符串

bksxznpy  于 2021-08-25  发布在  Java
关注(0)|答案(3)|浏览(298)

**已关闭。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想要改进此问题?**更新问题,使其位于堆栈溢出主题上。

四天前关门。
改进这个问题
我正在编写一个java程序,它接受三个数字,如果其中任何一个是相同的,则忽略该数字。运行该检查后,它将剩余的数字相加。但是,java试图将我的变量识别为布尔变量而不是int变量。我现在使用的语法是:

public class A2 {

public static int loneSum(int a, int b, int c) {
     if (a = b && a != c) {
          return c;
     } else if (a = c && a != b) {
          return b;
     } else if (b = c && a != b) {
          return a;
     } else if (a = b && a = c) {
          return 0
     } else {
          return a + b + c
     }
}

public static void main(String[] args) {
     System.out.println(loneSum(1, 2, 3));
     System.out.println(loneSum(3, 2, 3));
     System.out.println(loneSum(3, 3, 3));
}

}

我的ide在if语句条件中给了我一个错误,错误消息是“参数类型int,boolean的运算符&&未定义”。我想知道如何解决这个问题,因为方法中没有布尔值。

mwg9r5ms

mwg9r5ms1#

此代码正在使用等于赋值运算符( = )其中,显然等于等于运算符( == )是有意的。
equals赋值运算符为变量赋值,并返回变量的新值。在这种情况下,, a = b 指定的值 bb ,并返回 b .
equals相等运算符返回一个布尔值,指示两个值是否相等。同样地 != 相等运算符返回与之相反的布尔结果 == (即。 a!=b 产生与相同的结果 !(a==b) ).
有了这些信息,就可以很容易地了解返回编译器错误的原因。走这条河的第一条支流 if 声明:

if (a = b && a != c) {
    return c;
}

条件检查相当于 a = (b && a != c) ,即,它正在尝试分配 b && a != c 到变量 a . 条件与算子( && )只能用于比较布尔值。然而, b 是一个 int 鉴于 a != c 是一个 boolean 表情。这解释了返回编译器错误的原因: The operator && is undefined for the argument type(s) int, boolean

lsmd5eda

lsmd5eda2#

您的代码不正确,您必须理解=(赋值)和==(等于)运算符之间的区别。
“=”是一个赋值运算符,用于将右侧的值赋值给左侧的变量。
“==”运算符检查两个给定的操作数是否相等。如果是,则返回true。否则返回false。
这里的问题是使用赋值运算符而不是相等运算符。
更正代码:

public class A2 {

    public static int loneSum(int a, int b, int c) {
        if (a == b && a != c) {
            return c;
        } else if (a == c && a != b) {
            return b;
        } else if (b == c && a != b) {
            return a;
        } else if (a == b && a == c) {
            return 0;
        } else {
            return a + b + c;
        }
    }

    public static void main(String[] args) {
        System.out.println(loneSum(1, 2, 3));
        System.out.println(loneSum(3, 2, 3));
        System.out.println(loneSum(3, 3, 3));
    }

}
mzmfm0qo

mzmfm0qo3#

您的代码有一些小的分号错误和与运算符相关的错误,请将其与您的代码进行比较

public class A{

public static int loneSum(int a, int b, int c) {
     if (a == b && a != c) {
          return c;
     } else if (a == c && a != b) {
          return b;
     } else if (b == c && a != b) {
          return a;
     } else if (a == b && a == c) {
          return 0;
     } else {
          return a + b + c;
     }
}

public static void main(String[] args) {
     System.out.println(loneSum(1, 2, 3));
     System.out.println(loneSum(3, 2, 3));
     System.out.println(loneSum(3, 3, 3));
}

}

相关问题