2014-01-15 105 views
2

儘管我試圖做的事情非常明顯,但我並不希望被告知如何提出最終結果,即使我要去的方式是錯誤的(提示雖然會被讚賞)。無論如何...查找字符串中某個重複字符/子字符串中每一個的位置

例如,一個字符串格式的數字的8位二進制表示,「01110101」。如果我將這個數字倒過來,我會得到「10101110」。如果我想找到每個1的位置並將它們添加到一個數組中,我該如何去做呢?我試圖使用indexOf('1'),但它一直返回0或1作爲索引。

編輯:根據最終結果,我的意思是我試圖用所有這些完成的總體目標,而不是我所問的問題。我只是想阻止某人跳進來,準確地告訴我如何從二進制轉換爲十進制而不是回答我目前的問題...

編輯2:好的,我會更具體。基本上,我試圖拿一個二進制數字,翻轉它們並獲得這些數字的位置並將它們添加到數組中。然後,我將嘗試遍歷數組,將每個位置的力量加2並加起來。也許不是從二進制轉換爲十進制的最有效方式,但這是我想出的。

+0

您對indexOf('1')的問題是它只返回該字符的第一次出現(如[String documentation](http://docs.oracle.com/javase/ 7 /文檔/ API /爪哇/郎/ String.html#的indexOf%28java.lang.String%29))。 這就是說,既然你不想有任何具體的答案,請嘗試用不同的方式來表示你的字符串。查看String文檔以查看可以在其上調用的方法。 – endorphins

+1

提示提示charAt(index) – gtgaxiola

+0

與其他人已經指出的一樣,您可以使用'string.charAt(index)'方法返回您指向的字符。你所要做的就是遍歷字符串的所有字符,並測試它們是1還是0 ..或者你可能期望什麼。但是,如果你想讓提示更加具體,我可以給你一些代碼當然 – GameDroids

回答

0

嘗試使用StringTokenizer在遍歷每個字符的同時掃描char字符。

StringTokenizer s = new StringTokenizer("0101010111101"); 
    ArrayList index = new ArrayList(); 
    int count; 

    while(s.hasMoreTokens){ 

     String num = s.nextToken(); 

     if(num.equals("1")){ 
      index.add(count); 
     }count++; 

    } 
+0

使用'num.equalsIgnoreCase(「1」)'來測試兩個字符串的相等性,'equals()'測試兩個'Objects'是否相同(如果他們有相同的內容則不行) – GameDroids

相關問題