需要帮助:我的循环中某些功能无法正常运行。我相信结果+结果字符串会引起问题吗?

时间:2019-02-11 01:18:43

标签: java string for-loop char

我在这里做这个特定的练习: 问题: 给出一个非空字符串和一个整数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 我不需要一个简单的解决方案,我只想了解问题出在哪里以及如何使其正常工作。

锻炼参考:https://codingbat.com/prob/p196441

1 个答案:

答案 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();
}