0

エラー行は 13 です。エラーは Array index out of bound です。 http://pastebin.com/L3FtzarH

この方法は、文字列内の文字を検索することであり、同じ文字のすぐ隣に繰り返し文字がある場合を除いて、正常に機能します。たとえば、「ウサギ」という単語では、文字「b」でエラーが発生し、2 回発生します。と同じ文字の隣に。

ハングマンゲームやってます。空白には index を to で掛けます。例: 合言葉が「猫」の場合、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;
         }
      }
   }
4

1 に答える 1

1

ブロック内で、呼び出しでif (chequearif == true) {使用しようとします。最初のオカレンスの後でさらにオカレンスをチェックしようとしていますが、それが指していると思われますが、以前にインデックスに 2 を掛けたことを忘れています。したがって、2 回目のオカレンスを超えた場所を指しているため、-1 を返します。それを 2 倍して -2 にしてから と言おうとしますが、これは明らかに負のインデックスでは機能しません。indexindexOf()indexindexOf()arrayGuiones[index]

于 2011-10-08T20:14:12.010 に答える