2014-12-07 101 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; 
} 
相關問題