2011-11-12 59 views
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); 
      } 
     } 
    } 
+3

['Integer.toBinaryString()'](http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#toBinaryString(int%29) – NullUserException

回答

0

您的字符串包含「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; 
} 

還要注意,該算法將打印相比,你的規範以相反的順序條款。