2016-04-26 69 views
0

所以我試圖寫一個方法,我在hang子手遊戲中迭代預定的單詞。如果信件沒有被猜出,我想最終檢查每個字符並輸入一個「_」,並顯示該信件是否存在,但是,我正在陷入無限循環,並且我無法找到它的位置。我在想我的邏輯也可能是錯誤的。找不到無限循環

public String hiddenWord() { 
    String hiddenWord = ""; 
    int i = 0; 

    while (i < this.word.length()) {    
     if (this.word.contains(hiddenWord)) { 
      char c = this.word.charAt(i); 
      hiddenWord += c; 
     } else { 
      hiddenWord += "_"; 
     } 
     i++; 
    } 

    return hiddenWord; 
} 
+3

您的觀察結果似乎與您上面粘貼的代碼不一致。 –

+0

'i'從'0'開始,每次迭代增加1次,無論如何。當達到字符串長度(不變)時,循環退出。這不能是一個無限循環。 – Thilo

+2

您是否嘗試通過調試器逐步完成代碼?您可以一次執行一行,檢查對象的成員和變量,並查看程序的行爲方式如何寫入。對於像這樣簡單的程序,自己進行調試可能是一個有價值的教育練習。 – MikeC

回答

0

我假設的邏輯是:

  1. 給定一個詞,就像 「火山肺矽病」。
  2. 猜猜一個角色,說'我'。
  3. 返回「______________i_______i__i_i____________i__i_」。

你可以通過char循環字符,並與猜測進行比較。

示例代碼。

public class InfiniteLoop { 
    String word; 

    public static void main(String[] args) { 
     InfiniteLoop il = new InfiniteLoop(); 
     il.word = "Pneumonoultramicroscopicsilicovolcanoconiosis"; 
     String hw = il.hiddenWord('i'); 
     System.out.println(hw); 
    } 

    public String hiddenWord(char g) { 
     String hiddenWord = ""; 
     int i = 0; 

     while (i < this.word.length()) {    
      if (this.word.charAt(i) == g) { 
       hiddenWord += g; 
      } else { 
       hiddenWord += "_"; 
      } 
      i++; 
     } 

     return hiddenWord; 
    } 
}