2011-10-08 28 views
0

錯誤行是13.錯誤是數組索引超出範圍。 http://pastebin.com/L3FtzarH當有一個字符緊跟在另一個字符之後時,數組索引超出範圍(Java)

該方法是將字符查找到一個字符串,除非在緊挨着同一個字符時有重複字符,例如在單詞「兔子」中給我一個字母錯誤「b」是它的兩倍和旁邊的同一個字母。

我在做hang子手遊戲。 我乘以索引的空格。例如:如果祕密字是「貓」,那麼它將出現3個下劃線:下劃線字符串有6個字符的「_ _ _」,所以如果字母是A(世界「貓」中的索引1),我乘以2字符串 中填寫正確的地方強調: 「_ A _」

編輯1,代碼:

public void buscarLetra() { 
     chequearif = false; 
     string = ""; 
     letra = letraEscogida.toCharArray(); 
     System.out.println("la letra pasa a char:" + letra[0]); 
     int index = 0; 
     for (int i = 0; i < (palabraElegida.length()); i++) { 
     if (palabraElegida.substring(i, i + 1).equals(letraEscogida) == true) { 
      if (chequearif == true) { 
       string = ""; 
       index = palabraElegida.indexOf(letraEscogida, index + 1); 
       index *= 2; 
       arrayGuiones[index] = letra[0]; 
       System.out.println("segundo index: " + index); 
       index = 0; 
      } 
      index = palabraElegida.indexOf(letraEscogida); 
      index *= 2; 
      System.out.println("primer index: " + index); 
      arrayGuiones[index] = letra[0]; 
      for (int j = 0; j < arrayGuiones.length; j++) { 
       string += arrayGuiones[j] + ""; 
      } 
      lbl_palabra.setText(string); 
      chequearif = true; 
     } 
     } 
    } 
+1

請在論壇中發佈您的代碼,而不是鏈接。 –

+1

順便說一句:在計算中包含下劃線之間的空白時,會讓它變得太複雜。只需根據實際字符進行計算,然後根據需要格式化(例如,在所有字符之間包含空格)。 – home

+0

確切的錯誤是什麼?它試圖讀什麼索引? – dcpomero

回答

1

裏面你if (chequearif == true) {塊,嘗試在indexOf()呼叫使用index。您嘗試在第一次出現後檢查更多出現次數,您認爲index指向的是,但您忘記了之前已將索引乘以2.因此它指向第二次出現之外的某處,因此indexOf()返回-1 。你把它加倍到-2,然後試着說arrayGuiones[index],這顯然不會用負指數。

+0

優秀,所以我必須做的是將指數除以2,以不改變指數。 –

相關問題