2017-10-12 270 views
-1
String str = "abcdefghijklmnoprqstuvwxyz"; 
String[] array = new String[str.length()/4 +1]; 

在我工作之後,數組應該看起來像array = {"abcd","efgh","ijkl"...."yz"}。 這是我曾嘗試:根據字符數分割字符串

WORK1:

int strIndex = 0; 
int arrayIndex=0; 
for(strIndex=0; strIndex<str.length();strIndex++) { 
    array[arrayIndex] += Character.toString(str.charAt(strIndex)); 
    if((strIndex % 4 == 0) && (strIndex != 0)) 
    arrayIndex++; 
} 

============================= ===============================================================工作2:

String str = "abcdefghijklmnoprqstuvwxyz"; 
String[] array = new String[str.length()/4 +1]; 
int start = 0; // 0->4->8->12.. 
int end = 4; // 4->8->12->16... 

System.out.println("arraylength:"+array.length); 
for(int i=0;i<array.length;i++) { 
    array[i] = str.substring(start,end); 
    start+=4; 
    end+=4; 
} 

===========================================

WORK1:它給我輸出abcde fghi jklm nopr qstu vwxy z,這是錯誤的

WORK2:因爲substring()跳過4,所以當它訪問28的索引時它將成爲Exception的原因。最後一部分應該是:(str.substring(24,26));,我想不出有效的方法來處理這個問題。

任何意見將不勝感激。

+0

這是什麼編程語言? –

+0

謝謝你的建議。我已經添加了標籤「java」。我也檢查了可能的重複帖子 - 儘管它是單行的,但我很難從概念上理解代碼。 – CodingU

回答

0

您需要將子字符串結束限制字符串最大長度:

// pseudocode - you did not supply a tag for the language you are using 
str.Substring(start,Math.Min(str.Count,end)) // Math.Min == C# 
0

WORK1應該對於小的修改工作。

目前,由於您添加了第0,第1,第2,第3和第4個元素,因此現在將「abcde」放入第一個數組元素中。你希望在第四個元素之前不要分開。試試看:

int strIndex = 0; 
int arrayIndex=0; 

for(strIndex=0; strIndex<str.length();strIndex++) { 

    if((strIndex % 4 == 0) && (strIndex != 0)) 
         arrayIndex++; 
    array[arrayIndex] += Character.toString(str.charAt(strIndex)); 
} 

希望這會有所幫助。讓我知道你是怎麼辦的!

0

檢查下面的代碼sniplet,它可以正常工作,如你所說。 如果有任何問題,請告知我。 (添加了一個syso只是爲了驗證答案:))

 String str = "abcdefghijklmnoprqstuvwxyz"; 
    String[] array = new String[str.length()/4 +1]; 
    int start = 0; // 0->4->8->12.. 
    int end = 4; // 4->8->12->16... 
    int length = str.length(); 

    System.out.println("arraylength:"+array.length); 
    for(int i=0;i<array.length;i++) { 

     array[i] = str.substring(start,end); 
     start+=4; 
     end+=4; 

     System.out.println(array[i]); 
if(end>length) 
    end=length; 

    }