2014-12-07 71 views
0

任务是获取每个第n个字符并将其放入一个字符串中。 我在中途解决了这个问题。将每第N个字符添加到字符串

如果奇迹是输入的字符串,并且int = 2,我将得到以下输出:“Mrc”,而它应该是“Mrce”。

为什么它错过了最后一个字符?逻辑部分对我来说似乎是合理的。

public String everyNth(String str, int n) { 
    String firstletter = str.substring(0,1); // We store the first letter as well. 
    String secondhalf = ""; 
    while(str.length() > n) { // Run as long as n reaches the end of the string. 
    secondhalf += str.substring(n, n+1); // Add Nth character to string. 
    n+=n; 
    } 
    return firstletter+secondhalf; 
} 

编辑:增加了一个单独的计数器,int counter = n;所以它始终没有使价值翻倍。

+0

除了“N + = N”的错误,你实现了可怕的性能。 – dzidzitop 2014-12-07 18:17:10

+0

如果你想要一个更简单的方法来通过索引从字符串中提取单个字符,你可以使用'str.charAt(index)'而不是子字符串。 – cschieb 2014-12-07 18:18:08

+0

@dzidzitop,即时通讯编程新手。只是试图做一些简单的任务。您的解决方案将如何最大限度地提高性能 – kensil 2014-12-07 18:28:24

回答

3

你的问题就在这里:

n+=n; 

第一次2,然后4,然后8 ...

只需使用独立的计数器。

+0

感谢您的帮助。我现在增加了一个单独的柜台。 – kensil 2014-12-07 18:26:42

1

我会用的charAt功能在为做到这一点:

public String everyNth(String str, int n) { 
    String result=""; 
    for(i=0; i<str.length(); i=i+n){ 
    result+=str.charAt(i); 
    } 
    return result; 
}