Java 在循环中查找字符串的索引

Java 在循环中查找字符串的索引,java,Java,我正在尝试创建一个程序,它将返回一个分解为二次幂的特定数字。例如,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 Sc

我正在尝试创建一个程序,它将返回一个分解为二次幂的特定数字。例如,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);
            }
        }
    }

您的字符串
dig
包含“0”或“1”

您希望这样做:

 int power = 0;
 while (aux > 0 ) {
      int num = aux % 2;
      if (num == 1) {
         // Print next term
      }
      power++;
      aux /= 2;
 }

还请注意,此算法将以与您的规范相反的顺序打印术语。

您的字符串
dig
包含“0”或“1”

您希望这样做:

 int power = 0;
 while (aux > 0 ) {
      int num = aux % 2;
      if (num == 1) {
         // Print next term
      }
      power++;
      aux /= 2;
 }
还请注意,此算法将以与您的规范相反的顺序打印术语。

[
Integer.tobinarysting()
]([
Integer.toBinaryString()
](