ループ内の文字列のインデックスの検索

私は、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);
            }
        }
    }
2
追加された 編集された
ビュー: 1
追加された 著者 NullUserException,

1 答え

あなたの文字列 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;
 }

また、このアルゴリズムは、あなたの仕様と逆の順序で用語を印刷することにも注意してください。

0
追加された