2017-10-12 216 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; 

    }