检查位在java中设置或未指定其位置(黑客问题)

检查位在java中设置或未指定其位置(黑客问题),java,Java,我最初是这样做的,给定的数字和2^k(第二个输入,即位置)是双向和..ed,结果是否等于2^k。然而,它失败了一个测试用例,我想知道为什么?(在这种情况下,位置从0开始,从右向左) PS:我不是在寻找替代ans,因为我自己找到了它并完成了这个问题,我只是想解释一下为什么下面的代码在一个测试用例中失败 当我保持len&k!=0 import java.io.*; import java.util.*; import java.lang.*; public class Solution {

我最初是这样做的,给定的数字和2^k(第二个输入,即位置)是双向和..ed,结果是否等于2^k。然而,它失败了一个测试用例,我想知道为什么?(在这种情况下,位置从0开始,从右向左)

PS:我不是在寻找替代ans,因为我自己找到了它并完成了这个问题,我只是想解释一下为什么下面的代码在一个测试用例中失败

当我保持
len&k!=0


import java.io.*;
import java.util.*;
import java.lang.*;


public class Solution {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        long len, i, k, j;
        len = sc.nextLong();
        j   = sc.nextLong();

        k = 1 << j;
        // System.out.println(k);

        // System.out.println((len & (1 << (j))));

        if( (len & k) == k ) {
              //  System.out.println((len & (1 << (j))));
              System.out.print("true");
        }else
              System.out.print("false");
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
    }

} 
        }

    } 

导入java.io.*;
导入java.util.*;
导入java.lang.*;
公共类解决方案{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
long len,i,k,j;
len=sc.nextLong();
j=sc.nextLong();

k=1它应该可以工作。我想知道失败测试的输入值是多少

看看这个

long len = sc.nextLong(); // should not be negative
int j = sc.nextInteger(); // should be within [0;61]
long k = 1L << j;

// if bit is set
len & k == k (e.g. len & k == 0) == true
long len=sc.nextLong();//不应为负
int j=sc.nextInteger();//应该在[0;61]之内

long k=1L请澄清您的问题。@AlexRudenko如我所说,我想知道上述代码在某些情况下失败的原因。您还想让我解释什么?@bha_1999您能为失败的测试提供一个输入值吗?您的代码没有编译,导入有问题(我认为缺少
*
),以及
如果(len&k==k)
错误:二进制运算符“&”的操作数类型不正确:第一种类型:长第二种类型:布尔值
。此外,由于这是一个黑客银行问题,您能否提供问题的链接,以便我们可以阅读原始文本并可能尝试测试?@MarcoLucidi它确实在这里和我的本地环境中编译(这是eclipse)。正如我所说,即使在Hackerrank上,它也通过了9/10测试用例,因此绝对不是编译问题。它只是不检查一个角落的用例。还有,这里的链接是:谢谢,这很有效。我改变了(1