【问题标题】:Why am I getting java.lang.ArrayIndexOutOfBoundsException: 1?为什么我得到 java.lang.ArrayIndexOutOfBoundsException: 1?
【发布时间】:2017-05-24 17:27:47
【问题描述】:
 try{
    DefaultTableModel tm = (DefaultTableModel) jTable1.getModel();
    FileInputStream FI = new FileInputStream("C://Users//Dell-Pc//Documents//NetBeansProjects//MyBookShop//src//Layouts//book_store.txt");
    DataInputStream DI = new DataInputStream(FI);
    BufferedReader br= new BufferedReader(new InputStreamReader(DI));
    String line="";
    while((line=br.readLine()) != null){
        Map m1 = new HashMap(); 
        String[] data1=line.split(",");

            m1.put("ISBN", data1[0]);
            m1.put("TITLE", data1[1]);
            m1.put("AUTHOR", data1[2]);
            m1.put("PRICE", data1[3]);
            m1.put("NUMBER", data1[4]);
            //System.out.println(data1[1]);
            //System.out.println("\t"+m1);
            Vector v1 = new Vector();
            v1.add(m1.get("ISBN"));
            v1.add(m1.get("TITLE"));
            v1.add(m1.get("AUTHOR"));
            v1.add(m1.get("PRICE"));
            v1.add(m1.get("NUMBER"));

            tm.addRow(v1);

        //v.clear();
       //tm.setDataVector(data, cols);

    }
    }catch(Exception e){

// JOptionPane.showMessageDialog(this, e);

Logger.getLogger(HomePage.class.getName()).log(Level.SEVERE, null, e); }

【问题讨论】:

  • 我们不是读心术的人。我们不知道是什么声明导致了这个问题。我们不知道您文件中的数据是什么样的。发布一个正确的minimal reproducible example 来证明问题。如果您确实需要从文件中读取数据,请使用 StringReader 获取数据。
  • 除了@camickr 建议的 MCVE。 1) 见What is a stack trace, and how can I use it to debug my application errors? 2) 总是复制/粘贴错误和异常输出! 3) 请对代码和代码 sn-ps、HTML/XML 等结构化文档或输入/输出(如堆栈跟踪)使用代码格式。为此,请选择文本并单击消息发布/编辑表单顶部的{} 按钮。 4)硬编码一些数据来替换book_store.txt
  • 如果您遵循 Java 命名约定,您的代码会更容易阅读。并且不要使用java.util.Vector。它已经过时了大约十九年。
  • 我在 50 分钟前花时间格式化您的代码,您为什么撤消更改?我不会第二次修复代码!不要使用浏览器的后退按钮。添加新信息时,请单击您问题的"edit" 链接。仍然不知道您为什么要编辑问题,因为您没有添加任何新信息。
  • @LewBloch, And don't use java.util.Vector. - 这是 DefaultTableModel API 使用的。在创建使用不同数据存储的自定义 TableModel 之前,OP 需要了解 JTable 和 TableModel 如何工作的基础知识。

标签: java swing indexoutofboundsexception


【解决方案1】:

问题在于,您在没有验证它们是否有任何好处的情况下就消耗了线条。

如果您的文件末尾有一个空行(常见),则line.split(",") 为该行提供[""]。索引零是一个有效的访问(一个空字符串),但索引一是无效的,一切都崩溃了。您应该在执行可能引发错误的访问之前验证数据是否正确(至少用 try - catch 包围)

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多