当前位置: 首页 > 知识库问答 >
问题:

Java中的逻辑和错误。不能执行二进制和

南宫才艺
2023-03-14

我是java的新手,我正在学习按位运算符。当我运行下面的代码时,它会抛出一个错误。我不知道错在哪里。我将&替换为&它仍然给出错误。

class Main{
    
    public static void main(String []args){

      int n=5, k=3;
        if (n && (1<<(k-1)!=0))  //THIS LINE GIVING ERROR
            System.out.println("Mahima! bit is set");
        else
            System.out.println("Mahima!  bit is not set");
        
    
    }
}
  Line 6: error: bad operand types for binary operator '&&' [in Main.java]
            if (n && (1<<(k-1)!=0))
                  ^
      first type:  int
      second type: boolean

当我使用单个&我得到以下错误

Line 6: error: bad operand types for binary operator '&' [in Main.java]
        if (n & (1<<(k-1)!=0))  //THIS LINE GIVING ERROR
              ^
  first type:  int
  second type: boolean

共有1个答案

孟翰海
2023-03-14

首先,将&运算符更改为&是正确的。
&是逻辑与运算符。它接受两个boolean并返回一个boolean
&是按位与运算符。它需要两个ints,并返回一个int

&更改为&后,您必须添加一些括号,因为!=的优先级比&高:

java prettyprint-override">if ((n & (1<<(k-1))) !=0)
    System.out.println("Mahima! bit is set");
else
    System.out.println("Mahima!  bit is not set");
 类似资料:
  • 我正在尝试使用Leetcode中的递归来解决路径和问题。我不擅长用递归解决问题。我看到了一些其他的解决方案,但我试图自己实现一个。我不明白我在我的方法中做错了什么。如果有人帮助我理解我做错了什么,我将非常感谢你的帮助。提前谢谢。 问题陈述:给定二叉树的根和整数targetSum,如果树有根到叶的路径,则返回true,这样沿路径的所有值相加等于targetSum。 叶是没有子节点的节点。 我的方法:

  • 问题内容: 编译并在C中运行此代码 输出: 现在对于Java中的相同逻辑 输出: 为什么两种语言的输出都不同,输出是可以理解的,但我无法理解 还有一件事,如果应用前缀运算符,那么两种语言的结果相同,为什么呢? 问题答案: 这是因为在C.看看所调用未定义行为这 从链接: 第二句说:如果将对象写入完整表达式中,则在同一表达式中对对象的任何和所有访问都必须直接参与要写入的值的计算。该规则有效地将法律表达

  • 无论如何,条件查询应该根据提供的与表中的颜色不匹配的表(可以是联接查询、子查询或其他任何内容),从表中提取颜色列表。

  • 我正在开发一个MFC应用程序,并在类头中声明了一个流对象,然后在构造函数中初始化该对象,并在同一类的其他方法中使用。我遇到以下错误: 错误C2678:二进制' 我搜索了这个问题,找到了许多解决方案,即有一些建议: 使用包含 我得到的其他一些信息是关于这个错误何时发生的。但我所得到的并不能解决我的问题。请查看我的代码: CGroupComboBox。h: CGroupComboBox。cpp: 我做

  • 我目前正在开发一个trie实现: 从文本文件中读取单词 逐个字符迭代该单词 将字符的按字母顺序排列的索引号附加到新节点并附加到根节点 我在第三步遇到了麻烦。 你看,我在第三步尝试做的是: null 对于第3步,我已经做了: 它设置root以便它现在是下一个节点 我在这些陈述中犯了什么逻辑错误吗?