给定String
,在索引0,1,4,5,8,9 ... {"小猫&#返回String
s char
34;收益" kien"。
class FirstLastStr {
public String altPairs(String str) {
return str.substring(0, 2)
+ str.substring(4, 6)
+ str.substring(8, 10); //This part will throw string out of bound
}
}
答案 0 :(得分:0)
您似乎尝试从包含7个字符的字符串返回字符8和9。您只需在尝试操作之前检查字符串长度
StringBuilder sb = new StringBuilder();
if (str.size() > 2) {
sb.append(str.substring(0,2));
}
if (str.size() > 6) {
sb.append(str.substring(4,6));
}
if (str.size() > 10) {
sb.append(str.substring(8,10));
}
return sb.toString();
不是最有效的代码,但这将与您的具体情况有关。
答案 1 :(得分:0)
试试这个:
class FirstLastStr
{
public String altPairs(String str)
{
char[] arr = {str.charAt(0), str.charAt(1),str.charAt(4), str.charAt(5), str.charAt(8), str.charAt(9)};
return new String(arr) ;
}
}
答案 2 :(得分:0)
如果你想要的是一个在字符串中获得两个字符然后再跳过2个字符并将输出作为字符串返回的函数,你需要这个:
public class FirstLastStr {
public String altPairs(String str)
{
StringBuilder result = new StringBuilder();
for (int current_char = 0; current_char + 2 <= str.length(); current_char += 4) {
result.append(str.substring(current_char, current_char + 2));
}
return result.toString();
}
}
这将返回任意长度的字符串的正确输出。
示例输出:
'kittens' -> 'kien'
'cat' -> 'ca'
'at' -> 'at'
'a' -> ''
'' -> ''
'01234567890123456789' -> '0145892367'
答案 3 :(得分:0)
感谢您的所有答案。 因为我正在尝试,我得到了我的问题的答案。 抱歉上传迟到但有很多其他方法可以做到。 这是我的答案。
String res = "";
public String altPairs(String str) {
int i=0;
while (i<str.length()) {
res +=str.charAt(i);
i=i+1;
if(i<str.length()) {
res+=str.charAt(i);
i=i+3;
}
}
return res;
}