Java LinkedList的IndexOutOfBoundsException

Java LinkedList的IndexOutOfBoundsException,java,swing,indexoutofboundsexception,Java,Swing,Indexoutofboundsexception,我试图根据JList中选择的值将文本字段的文本设置为字符串 JList=列表 LinkedList=wordpair\u列表 WordPair包含wordA和wordB 如果有人能向我解释为什么这行不通,我将永远欠你的债。显然,这个程序中的代码要多得多,但stackoverflow似乎认为我的文本与代码的比率不成比例。如果你个人想要剩下的代码,如果你愿意接受挑战,我很乐意把它发给你 public void showTranslation(){ int i = wordpair_list.

我试图根据JList中选择的值将文本字段的文本设置为字符串

JList=列表 LinkedList=wordpair\u列表 WordPair包含wordA和wordB 如果有人能向我解释为什么这行不通,我将永远欠你的债。显然,这个程序中的代码要多得多,但stackoverflow似乎认为我的文本与代码的比率不成比例。如果你个人想要剩下的代码,如果你愿意接受挑战,我很乐意把它发给你

public void showTranslation(){
    int i = wordpair_list.indexOf(list.getSelectedValue());
    textField.setText(wordpair_list.get(i).getWordB());
}

public Dictionary(Object o){ 
    if (o instanceof String){ 
        String filename = (String) o; 
        File file = new File(filename); 
        Scanner sc = null; 

        try { 
            sc = new Scanner(file); 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } 

        while (sc.hasNextLine()){ 
           words.add(new WordPair(sc.nextLine())); 
        } 
    } 
}

public WordPair(String arg0) { 
    arg0.trim(); 
    int equalsIndex = arg0.indexOf("="); 
    this.wordA = arg0.substring(0, equalsIndex-1); 
    this.wordB = arg0.substring(equalsIndex+1); 
}

仅凭您提供的代码很难判断,但如果wordpar_列表仅包含wordA和wordB两个元素,则list.getSelectedValue的输出只能是0或1。我会尝试打印或调试以查看list.getSelectedValue提供给您的是什么,但它可能不是您所期望的0或1

希望有帮助

您的字对列表不包含任何列表。getSelectedValue返回。请注意,当指定的对象不包含在列表中时,该方法将返回-1

您可以通过打印/记录i的值来确认这一点

在修复代码方面,如果wordpair_list确实包含list.getSelectedValue,那么您的代码可以更简洁地写为:

public void showTranslation(){
    textField.setText(list.getSelectedValue().getWordB());
}
但由于该值不在列表中,因此您必须尝试其他方法。一种可能是您混淆了类型,正在wordpair_列表中查找不兼容类型的对象。另一种可能性是,您需要重写equals,因此还需要重写hashCode,以便indexOf查找成功


关于最后一点的更多信息:

这是一个可以使用调试器的好例子。或者插入一组System.out.println来打印一些本地值。

首先需要调试此代码,打印从indexOf返回的任何内容 其次,为了获得最佳实践,您可能不应该使用LinkedList,而应该使用ArrayList


另一件事,您可能必须将wordpair_list.geti转换为wordpair或其他对象。

发布您的异常、完整调用跟踪及其指向的部分代码。看起来映射比列表更适合您的目的。'code'公共字典对象o{if o instanceof String{String filename=String o;File File=new Filefilename;Scanner sc=null;尝试{sc=new Scannerfile;}catch FileNotFoundException e{e.printStackTrace;}而sc.hasNextLine{words.addnew WordPairsc.nextLine;}}}和…public WordPairString arg0{arg0.trim;int equalindex=arg0.indexOf=;this.wordA=arg0.substring0,equalindex-1;this.wordB=arg0.substringequalindex+1;}我似乎无法让它以代码格式发布代码,sorrywordpair_list是一个链表,其中每个元素都包含一个wordA和一个wordB。链表类型是WordPair,这是我创建的一个类,用于包含这两个词。因此,我使用各种系统输出对其进行了调试,并了解到我试图在obje的linkedlist中查找对象的元素那么,当检查所选元素的索引时,我需要该单词来自何处的索引。有什么想法吗?当JList没有索引操作时,如何更改该indexof语句以获取JList“list”的索引?