首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IndexOutOfBoundsException for LinkedList

IndexOutOfBoundsException for LinkedList
EN

Stack Overflow用户
提问于 2014-04-09 01:03:29
回答 4查看 130关注 0票数 0

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

  • JList = list
  • LinkedList<WordPair> = wordpair_list
  • WordPair包含wordAwordB

如果有人能向我解释为什么这不起作用,我会永远欠你的。这个程序中显然有更多的代码,但是stackoverflow似乎认为我的文本与代码的比率是不成比例的。如果你个人想要剩下的代码,如果你准备好迎接挑战的话,我很乐意发送给你。

代码语言:javascript
复制
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); 
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-09 01:09:26

您的wordpair_list不包含任何list.getSelectedValue()返回的内容。注意,当指定的对象不包含在列表中时,indexOf()方法将返回-1

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

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

代码语言:javascript
复制
public void showTranslation(){
    textField.setText(list.getSelectedValue().getWordB());
}

但是由于这个值不在列表中,所以您必须尝试其他方法。一种可能是您混淆了您的类型,并且正在wordpair_list中查找不兼容类型的对象。另一种可能是您需要覆盖equals() (因此,也包括hashCode()),以便您的indexOf()查找成功。

关于最后一段的更多信息如下:当在Java中覆盖等于和hashCode时,应该考虑哪些问题?

票数 0
EN

Stack Overflow用户

发布于 2014-04-09 01:09:17

从您提供的代码很难判断,但是如果wordpar_list只包含2个元素(wordA和wordB),那么list.getSelectedValue()的输出只能是0或1。我会尝试打印(或调试)以查看list.getSelectedValue()给您带来了什么,但是它可能不是您所期望的0或1。

希望这能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2014-04-09 01:11:23

这是一个很好的例子,您可以使用调试器。或者插入一堆System.out.println()来打印出一些本地值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22951014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档