Index van een string in een lus vinden

Ik probeer een programma te maken dat een bepaald getal teruggeeft dat is afgebroken tot machten van twee. Bijvoorbeeld 45 wordt getoond als "2 ^ 5 + 2 ^ 3 + 2 ^ 2 + 2 ^ 0", daarvoor heb ik het getal geconverteerd naar basis 2 en omgezet in een string zodat ik de index kon vinden en de resultaat dat ik wilde. Maar bij het proberen om de index terug te krijgen, krijg ik alleen de eerste gevonden index. Kan iemand mij helpen met dit onderdeel?

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
toegevoegd de auteur NullUserException, de bron

1 antwoord

Uw string graaf bevat ofwel "0" of "1".

String dig = String.valueOf(num);

U wilt dit in plaats daarvan:

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

Merk ook op dat dit algoritme de termen in omgekeerde volgorde zal afdrukken in vergelijking met uw specificatie.

0
toegevoegd