2014-04-17 30 views
0

該方法應該接受一個字符串並將字符串輸出爲字符,但它應該是大小的兩倍。例如:字符串是「PaRty」 返回應該是'P','P','a','a','R','R','t','t','Y','Y 「關閉字符串的一個錯誤

對於我的代碼,當我運行它說,該陣列的元素不同[]的測試;預計:但:

我無法弄清楚了是錯誤的,希望有人可以幫點什麼爲了讓我理解並做好這項工作?如果我關閉了,請解釋一下?

//Implementing the second method: toExpandedArray, which works with 
//a string and then returns chars of that string. 
public static char[] toExpandedArray(String string) 
{ 
    //Initializing variable needed to char the string 
    char[] charArray = new char[string.length() * 2];  

    //The loop that will turn the string into characters. 
    for (int i = 0; i < string.length(); i++) 
    {    
    charArray[i] = string.charAt(i) ; 
    charArray[i+1] = charArray[i]; 
    i++; 
    } 

    //Returning the characters as an array. 
    return charArray; 

回答

4

您的複製邏輯不正確。您需要將索引i的信件複製到索引2*i2*i + 1。最後的i++是不必要的;它已在for循環中完成。更改

charArray[i] = string.charAt(i); 
charArray[i+1] = charArray[i]; 
i++; 

charArray[2*i] = string.charAt(i); 
charArray[2*i+1] = string.charAt(i); 
+0

謝謝!是因爲前面的charArray初始化爲string.length * 2而導致2 * i的原因? – user3404391

+0

爲了將'0'處的字符複製到'0'和'1','1'處的字符被複制到'2'和'3','2'處的字符被複制到'4', '5'等等。 – rgettman

+0

哦,好的,謝謝! – user3404391

0
string.charAt(i) 

是不正確,應該是

string.charAt(i/2) 

你增加我兩次,每次循環。