2013-12-22 37 views
0

我正在做一個文字遊戲作爲作業。但我卡住了。我有一個洗牌字,但我需要每回合揭示它的第一個(然後第二,第三...)字母。我試圖做這樣的事情:揭開文字遊戲中的一封信

char[] arr = a.toCharArray(); 
    for (int j = 0; j<arr.length; j++) { 

      if (original[j] == shuffled[j]) { //If the not shuffled word's first letter equals to shuffled word's first letter then move to the 2nd letter and reveal it. Maybe update the j to j+1?} 

      else { 
      char temp = shuffled[j]; 
      shuffled[j] = original[j]; 
      original[j] = temp; 
      String h = new String(shuffled); 
      System.out.println("test " + h) ; 

      } 
     } 

我的輸出應該是這樣的:

原詞:獾 拋去字:drBage

1日依次爲:Brdage

第2回合:Badrge

第3回合:Badegr

4依次爲:獾

我的電流輸出是:

原詞:Cat123

SHUFF 12Cta3

測試C2Cta3

測試CaCta3

測試Catta3

測試Cat1a3

測試Cat123

測試Cat123

+0

你目前正在收到什麼?這裏在Stackoverflow上,說明什麼目前不起作用是合適的。這將有助於瞭解您目前的產出。 –

+0

添加了我的當前輸出。 @peeskillet – morgothraud

+0

它不起作用?你有什麼想看到的是輸出? –

回答

0

下面的僞代碼應該有助於澄清你的問題。我會調用一個函數,例如每次回合後我已經定義的揭示信。

public class Unscramble{ 

    public static void main(String[] args){ 

     char[] orig = args[0].toCharArray(); 
     char[] shuffled = args[1].toCharArray(); 
     int count = 0; 

     while(count < orig.length){ 

      if(!(orig[count] == shuffled[count])) 
       shuffled = revealLetter(shuffled,orig, count); 

      count++; 
      System.out.println(count + " " + new String(shuffled)); 
     } 
    } 


    /* 
    * Reveal letter 
    * @param shuffled the shuffled array 
    * @param original original char array 
    * @param index index of letter to reveal 
    */ 
    public static char[] revealLetter(char[] shuffled, char[] original, int index){ 
     shuffled[index] = original[index]; 
     return shuffled; 
    } 
} 
+0

revealNo是int索引嗎? @Hmm – morgothraud

+0

有了這個(我把int索引改成int revealNo)我的輸出是:混洗字:1g2Do3 ,新單詞:Dgg123(無限循環)@hmm – morgothraud

+0

對不起,你檢查了更新的代碼。 – Hmm

0

首先,不洗牌的話 - 你會失去正確的信令。

相反:

  • 遍歷字母
  • 打印從原來的字
  • 第「N」字母作從N +數組的一個副本結束
  • 將它洗,然後打印它
+0

我在不同的char []變量(原始[])中輸入正確的字母順序,稍後我將其轉換爲char []。我嘗試了3種不同的方式來做到這一點,但沒有一個能夠奏效。 @Bohemian – morgothraud