我正在尝试打印字符串的每个第3个字符,因此示例如下:
123456
返回36
但是我下面的代码返回14
public String getEveryThird() {
String newString = "";
for (int i = 0; i < string.length(); i++) {
if (i % 3 == 0) {
newString += (string.charAt(i));
}
}
return newString;
}
答案 0 :(得分:6)
好尝试。唯一的问题是,由于元素从0开始,您选择了除法的错误余数。
尝试以下条件:
if (i % 3 == 2)
答案 1 :(得分:4)
您当前的方法在其余的方法中已经失效(如前所述),但是可以使用更快的方法。而不是迭代每个字符,而是从第三个字符开始,并在每次迭代时将索引增加三。请记住,第三个字符在索引2(0
,1
,2
)处。另外,最好在StringBuilder
上使用String
并置(因为Java String
是不可变的)。喜欢,
StringBuilder sb = new StringBuilder();
for (int i = 2; i < string.length(); i += 3) {
sb.append(string.charAt(i));
}
return sb.toString();
答案 2 :(得分:0)
返回14
是因为您的循环从0
开始并且0 % 0
等于0
。
然后,当数字为4
时,索引i
等于3
,再等于3 % 3 = 0
。
尝试类似的东西:
if((i+1) % 3 == 0){
newString += (string.charAt(i));
}