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++;
}
=============================================== ========================= WORK2:
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)
您需要将Substring结尾限制为字符串Maximum lenght:
// pseudocode - you did not supply a tag for the language you are using
str.Substring(start,Math.Min(str.Count,end)) // Math.Min == C#
答案 1 :(得分:0)
WORK1应该稍作改动。
目前你正在推出&#34; abcde&#34;进入第一个数组元素只是因为你要添加第0,第1,第2,第3和第4个元素。你想在第4个元素之前分开而不是之后。试一试:
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));
}
希望这会有所帮助。让我知道你是如何上场的!
答案 2 :(得分:0)
检查下面的代码片段,它正如你所说的那样正常。 如果有任何问题,请告诉我。 (添加了一个仅用于验证答案的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;
}