我一直在乱涂乱画这段小代码,它应该计算并打印出 2 的哪些幂可以总结为给定的数字。它适用于小的奇数,但当我希望它计算偶数或更大的数时,它会丢失。
我什至不知道我可以尝试什么,代码看起来不错,但我可能一直没有注意到。
System.out.println("Give a number");
int gigaInt = si.nextInt();
String gigaBit = Integer.toBinaryString(gigaInt);
String[] gigaBitArray = gigaBit.split("");
System.out.println("Binary: " + gigaBit);
List<Integer> powers = new ArrayList<Integer>();
for(int counter = gigaBitArray.length-1; counter >= 0; counter--){
if (gigaBitArray[counter].equals("1"))
powers.add((int)Math.pow(2,counter));
else if(gigaBitArray[counter].equals("0")){
powers.add(0);
}
}
System.out.println("Powers: " + powers);
所以,显然,程序应该计算幂,而且确实如此!在某些情况下...这里,当给出 9
给出一个数字 9 二进制:1001 幂:[8, 0, 0, 1]
但是当我希望它计算偶数时,它总是显示“1”作为唯一的组成部分,如下所示:
给出一个数字 8 二进制:1000 幂:[0, 0, 0, 1]
每当被要求处理一个大数字时,它就会变得完全疯狂:
给出一个数字 542 二进制:1000011110 幂:[0, 256, 128, 64, 32, 0, 0, 0, 0, 1]
如果您对此提出任何建议,我将非常感激。这可能只是一个幼稚的错误,所以请指出。
慕尼黑5688855
蛊毒传说
斯蒂芬大帝
慕妹3242003
相关分类