我正在尝试创建一个程序,它将返回一个分解为2的幂的数字。例如45将显示为“2 ^ 5 + 2 ^ 3 + 2 ^ 2 + 2 ^ 0”,为此我将数字转换为基数2并将其转换为字符串,以便我可以找到索引并获取我想要的结果。但是当我试图返回索引时,我得到的是找到的第一个索引。任何人都可以帮我这个部分吗?
import java.util.*;
public class prog{
public static void main(String[] args){
Scanner keyb = new Scanner(System.in);
int val;
System.out.println("Valor");
val = keyb.nextInt();
int aux = val;
while (aux > 0 ){
int num = aux % 2;
aux /= 2;
String dig = String.valueOf(num);
String find = "1";
int index = dig.indexOf(find);
while (index >= 0) {
System.out.println(index);
index = dig.indexOf(find, index + 1);
}
}
}
答案 0 :(得分:0)
您的字符串dig
包含“0”或“1”。
String dig = String.valueOf(num);
你想要这个:
int power = 0;
while (aux > 0 ) {
int num = aux % 2;
if (num == 1) {
// Print next term
}
power++;
aux /= 2;
}
另请注意,与您的规范相比,此算法将以相反的顺序打印术语。