我試圖創建一個接受三個參數分區功能:文本字符串,模式字符串和整數k。Java的分區方法
目標是長度爲m的圖案的內容存儲在一個字符串數組K + 1個片段,其中每個片段是一個長度爲M/K + 1(或接近)的。 例如,如果字符串「ABCDEFGHIJKLMNOPQRSTUVWXYZ」進行解析,以該方法,其中k = 2 數組應看起來像這樣[ABCDEFGHI,JKLMNOPQ,RSTUVWXYZ]
該程序當m/K + 1被劃分均勻運行正常,但是當結果產生餘數時,結果是關閉的。我注意到錯誤似乎與米/ k的餘數+ 1
這是我有問題的代碼的部分對應:
public static String[] partition(String text, String pattern, int k) {
String[] fragment = new String[k+1];
int f = k+1;
int m = pattern.length();
int fragmentSize = (int)Math.floor(m/f);
int lastCharIndex;
// cannot partition evenly{
int i = 0;
while(i < f) {
// set the first partition as the largest
if(fragment[i] == fragment[0]) {
fragmentSize = (int)Math.ceil(m/f);
lastCharIndex = i * fragmentSize;
fragment[i] = pattern.substring(lastCharIndex, lastCharIndex+fragmentSize);
}
else {
fragmentSize = (int)Math.floor(m/f);
lastCharIndex = i * fragmentSize;
fragment[i] = pattern.substring(lastCharIndex, lastCharIndex+fragmentSize);
}
i++;
}
return fragment;
使用輸出上面的例子我目前收到的是[ABCDEFGHI,IJKLMNOP,QRSTUVWX]
我有一種感覺,它與fragmentSize的顯式轉換有關,但我無法找出解決方法。 任何幫助將不勝感激。
非常感謝!我能夠解決你的建議:-) – user3341198