2015-01-20 66 views
-2

我有一個字符串,我必須根據預設的長度數組進行劃分,然後子字符串將進入動態數組。Java自定義字符串劃分爲動態數組

實施例:

S = 101010101011001100個

通行證1:陣列=( 「10101010」, 「11001100」)

通行證2:數組=( 「1010」, 「1010」,「 1100「,」1100「)

Pass 3:Array =(」10「,」10「,」10「,」10「,」11「,」00「,」11「,」00「) 依此類推。

我已經嘗試過split(),vector,子串等,它沒有給我想要的結果。

由於數組的大小隨着子串的增加而增加,所以我無法理解代碼中正在進行的實際分割。如果有人能幫助我理解如何去做,那將會非常有幫助。提前致謝。

+0

「預置長度數組」是什麼樣的? – Kieveli 2015-01-20 19:26:18

+0

*我無法理解在代碼中正在進行的實際部門。*您是否可以發佈此代碼?如果我們自己看到它,我們可以幫助您理解它。 – 2015-01-20 19:26:48

+0

預設的數組長度是這樣的: length = {512,256,128,64,32,16,8,4,2} – CrazyCoder 2015-01-20 19:27:43

回答

0

你可以做

public static void divideAndPrint(String... strs) { 
    String[] array = new String[strs.length*2]; 
    for(int i = 0; i < strs.length; i++) { 
     array[i*2] = strs[i].substring(0,strs[i].length()/2); 
     array[i*2+1] = strs[i].substring(strs[i].length()/2); 
    } 
    System.out.println(Arrays.toString(array)); 
    if (array[0].length() > 1) 
     divideAndPrint(array); 
} 

divideAndPrint("1010101010110011"); 

打印

[10101010, 10110011] 
[1010, 1010, 1011, 0011] 
[10, 10, 10, 10, 10, 11, 00, 11] 
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1] 
+1

Bahahahahaha!如果它是作業,遞歸會給他一個「從互聯網0複製」。殘忍的回答! – Kieveli 2015-01-20 19:39:06

+0

@Kieveli我試圖給出一個答案,他們永遠不會對自己。 ;)我也不處理長度不是2的冪的字符串。 – 2015-01-20 19:44:41

+0

非常感謝Peter提供了這個片段,但它卻拋出了一大堆錯誤。 – CrazyCoder 2015-01-20 19:51:57

0

去做,首先把你輸入 'S' 到一個單一的元素數組:

Input Array = { "101010101011001100" } 

現在你想要做的是循環你的輸入長度數組。然後檢查是否在陣列中的第一個元素是比當前長度值短,則執行下列操作:

  • 舊陣列中的每個元素中創建一個新的數組
    • 拆分成通過使用strValue.substring長度值大小()
    • 每一塊添加到新的數組
  • 與新的陣列替換舊陣列
  • 打印出數組的值,以顯示它的工作

通過這樣做,每次迭代,你應該結束了,你正在尋找的結果。

如果輸入字符串長度與輸入數組長度不完全匹配,或者輸入數組長度不是遞減順序,那麼現在這可能不太適用。注意那些邊緣情況,如果他們重要。

希望這會有所幫助!

+0

它的確幫助了Kieveli,但其中最棘手的部分是我必須從可能包含任意數量的數據位的未知文件中獲取輸入。然後我不得不阻止它們進入512個最大的子串。現在我擔心的是,在分割比特之後,最後的剩餘比特可能是0-512之間的任何值。我如何根據他們進行分配? – CrazyCoder 2015-01-20 19:49:32

+0

我會在數據的其餘部分結束數組 - 即,在數組的起始處放置512個字符,並且每個元素直到您只剩下剩下的部分。最後一個元素可能不需要拆分,而是在下一次迭代期間添加。 – Kieveli 2015-01-21 13:13:11