2017-02-25 50 views
-1

我的代碼在下面給出了以下錯誤,我找不出原因。我試圖重新排序輸入的單詞(「波蘭」爲例)中的順序:如何在不使用哈希表的情況下對字符串中的字符進行重新排序?

(第一個字母,最後一個字母,第二個字母,第二個最後一個字母,第三個字母...等等),所以輸出應該是「Phosli」。

Screenshot

更新代碼

public static String encodeTheWord(String word1) 
{ 
    int b = 0; 
    int e = word1.length()-1; 
    String word2 = ""; 
    for (int i=0; i<e; i++) 
    { 
     word2 = word2 + word1.charAt(b) + word1.charAt(e); 
     b+=1; 
     e-=1; 
    } 

    System.out.println(word2); 

    return (word2); 
} 
+0

請不要張貼文字的截圖;只是發佈文本本身。 – ajb

+0

我會記住這一點,對不起 – daniel11

回答

1

對於一個單詞都以連字符量(波蘭)的,訂單的字符變成051423,因此b的最大值是2並且最小值是e是從53。因此,你的循環應該減少e並增加b兩次(所以你運行循環word1.length()/2次)。此外,

int e = word1.length();

將需要:

int e = word1.length() - 1;

對於不平的長度(word1.length() % 2 > 0)的話,你需要額外的檢查,否則將重複的中間人物。

+0

你是對的,第一個解決方案只適用於「波蘭語」和其他單詞。但「水」如同wra came一般。虐待現在嘗試你的解決方案,看看它如何變成 – daniel11

+0

我很抱歉,但我不能讓你的解決方案工作。你能詳細說明一下嗎?生病發布我的更新代碼(只適用於不平衡的單詞)在問題中! – daniel11

+1

您的循環終止條件'i 0)word2 = word2 + word1.charAt(b);' 。 –

1

你的for循環是錯誤的,你可以在索引一個字符,直到word1.length() - 1 ...

必須是

for (int i=0; i<word1.length()-1; i++) 

同樣適用於這個...

word1.charAt(e); 

因爲你定義éword1.length()

+0

沒有幫助。我仍然得到錯誤.... – daniel11

+0

同樣適用於此:word1.charAt(e); e必須是word1.length() - 1 –

+1

啊,這是謝謝! – daniel11

相關問題