【问题标题】:Array index out of bounds when there are a character repeat immediately after another (Java)当一个字符紧随其后重复时,数组索引超出范围(Java)
【发布时间】:2011-12-03 15:39:43
【问题描述】:

错误行是 13。错误是 Array index out of bound。 http://pastebin.com/L3FtzarH

方法是在字符串中查找一个字符,它工作正常,除非在同一字符旁边有重复字符,例如在单词“Rabbit”中给我一个带有字母“b”的错误因为它出现在同一个字母旁边。

我在做刽子手游戏。 对于空格,我将索引乘以 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;
         }
      }
   }

【问题讨论】:

  • 请将您的代码发布在论坛中,而不是链接中。
  • 顺便说一句:在计算中包含下划线之间的空格时,它变得太复杂了。只需根据实际字符进行计算,然后根据您的需要格式化(例如所有字符之间包含空格)。
  • 确切的错误是什么?它试图读取什么索引?
  • 我没有看到包括空白在内的这么复杂,它只是将索引乘以 2...但是我按照你说的@home 做到了,并且运行良好,谢谢。
  • 但我想不明白为什么当我包含空格时会给我一个错误。根据我的计算,索引从未超过字符串的长度......这就是给我的运行时错误。

标签: java methods indexing out


【解决方案1】:

if (chequearif == true) { 块中,您尝试在indexOf() 调用中使用index。您试图在第一次出现之后检查更多的出现,您认为 index 指向,但您忘记了您之前已将索引乘以 2。因此它指向第二次出现之外的某个位置,所以 @987654325 @ 返回 -1。您将其加倍为 -2,然后尝试说 arrayGuiones[index],这显然不会与负索引一起使用。

【讨论】:

  • 非常好,所以我要做的就是将索引除以 2,而不是更改索引。
猜你喜欢
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 2016-02-12
相关资源
最近更新 更多