我在这里做这个特定的练习: 问题: 给出一个非空字符串和一个整数N,返回以char 0开头的字符串,然后返回该字符串的第N个char。因此,如果N为3,请使用char 0、3、6,...等。 N为1或更大。 例如: everyNth(“奇迹”,2)→“ Mrce”
我的代码:
public String everyNth(String str, int n) {
int a = 0; String result= "";
for (int i=0;i<str.length();i++) {
if (str.charAt(i) % n == 0) {
result = result + str.charAt(i);
a++;
}
}
return result;
}
鉴于我的计划,我不知道如何解决我的代码: 1.将结果移至字符串结果 2.运行一个循环,仅在modular = 0时移动数据
但是我没有得到 Mrce ,而是得到了 rl 我不需要一个简单的解决方案,我只想了解问题出在哪里以及如何使其正常工作。
答案 0 :(得分:4)
我不知道如何告诉您答案,这很简单。您需要每第n个字符。因此,
if (str.charAt(i) % n == 0) {
应该是
if (i % n == 0) {
仅此更改(以及您提供的输入),我就会(预期)
Mrce
但是,我们可以通过在每次循环迭代中增加n
来使它变得更容易。因此,无需测试i
是否可被n
整除。我们还可以使方法static
。我更喜欢StringBuilder
。喜欢,
public static String everyNth(String str, int n) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i += n) {
sb.append(str.charAt(i));
}
return sb.toString();
}