查找循环中字符串的索引

时间:2011-11-12 21:04:21

标签: java

我正在尝试创建一个程序,它将返回一个分解为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);
            }
        }
    }

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;
 }

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