IndexOutOfBoundsException 没有被抛出 JFrame

Posted

技术标签:

【中文标题】IndexOutOfBoundsException 没有被抛出 JFrame【英文标题】:IndexOutOfBoundsException not being thrown JFrame 【发布时间】:2018-07-31 13:59:30 【问题描述】:

我的代码增加了arraylist.get(index) 中的索引,当我到达列表末尾时,它被用作下一个按钮,它应该抛出IndexOutOFBoundsException 并在文本框中显示一条消息。问题是,如果我不断增加异常不会被捕获并且它会不断重启arraylist,就像它走到尽头然后从头开始一样。

搜索索引在按钮处理程序之外初始化为 0

  try
    setResidentialFields(results,searchindex);

      
      catch(ArrayIndexOutOfBoundsException e)
          jTextField17.setText("NO MORE PROPERTIES");
      
       searchindex++; //increment for next element in current search

这是setResidentialFields 方法中的一行

  jTextField17.setText(String.valueOf(r.get(index).getTax())); //tax

要回复第一个答案,这就是我更改代码的方式

searchindex++;


    try


  jButton1.doClick();
  
  catch(IndexOutOfBoundsException e)
      jTextField7.setText("No more properties to display");
  

还是不行

【问题讨论】:

我想补充一点,当我在 setResidentialFields(results,3343); 行中手动输入超出范围的值时程序崩溃但出现异常但不是当我在 buttonclick 上增加变量时 你确定你捕捉到了正确的异常吗? docs.oracle.com/javase/8/docs/api/java/util/… 说IndexOutOfBoundsException 你确定setResidentialFields 正在抛出 ArrayIndexOutOfBoundsException 吗? 当我用 333 替换 'searchindex' 时它会抛出 IndexOutOfBoundsException,但当 searchindex 变量超出范围时不会在示例中我尝试 arrayindexoutofbounds 只是为了调试 我也尝试过 IndexOutOfBoundsException。不起作用,它只是在到达结束后不断重新启动显示从 0 开始的元素的数组列表 【参考方案1】:

我认为您的 indexToSearch 没有在正确的位置增加,永远打破循环(无论是否找到该属性)。下面是一个例子:

public class Answer 

    public static void main(String[] args) 

        int[] arr = 1, 2, 3, 4, 5;
        int indexToSearch = 0;
        int propertyToFind = 7;

        while (true) 
            try 

                if (arr[indexToSearch] == propertyToFind) 
                    System.out.println("found at index " + indexToSearch);
                    break;
                

             catch (ArrayIndexOutOfBoundsException e) 
                System.out.println("property " + propertyToFind + " not found");
                break;
            

            indexToSearch++;
        
    

【讨论】:

编辑了我的代码,我在尝试之前递增,所以我认为它仍然有效 我不这么认为 - 您应该在当前搜索之后增加索引。请注意我写的代码只是一个简化的例子。尝试理解何时按下(或单击)按钮的逻辑

以上是关于IndexOutOfBoundsException 没有被抛出 JFrame的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.IndexOutOfBoundsException:源不适合目标

ListView IndexOutOfBoundsException

IndexOutOfBoundsException 没有被抛出 JFrame

在索引处添加到 ArrayList 时出现 IndexOutOfBoundsException

RecyclerView:检测到 IndexOutOfBoundsException 不一致。无效的项目位置

ArrayIndexOutOfBoundsException 和 IndexOutOfBoundsException 之间的区别?