java - 从文本文件中的一行拆分 String[] 数组时出错 "Exception in thread "AWT-EventQueue- 0"java.lang.ArrayIndexOutOfBoundsException: 1"

标签 java

这是我的“checkDuplicateNames1”方法,我对 java 还很陌生,这是我的代码。

public boolean checkDuplicateNames1(String name,String surname) throws FileNotFoundException, IOException{
   boolean found = false;


  BufferedReader reader = new BufferedReader(new FileReader("transactions.txt"));


   String line;
   while((line = reader.readLine())!= null){

       String[] vector = line.split("~");

   String userName = vector[0];
   String userLastname = vector[1];
   String userCash = vector[2];
   String currentDate = vector[3];
   String paidStatus =vector[4];







   System.out.println(userName + userLastname + userCash + paidStatus + currentDate);



      if((userName.equals(name) && userLastname.equals(surname))){

            System.out.println(userName + userLastname + paidStatus);
           found = true;
       }

        }

     System.out.println(found);

        reader.close();











   return found;


}

有人知道我为什么会收到此错误以及我应该如何修复它吗?我不确定,但我觉得这是因为我分割了“String[] vector ”数组?。

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at Lending.checkDuplicateNames1.checkDuplicateNames1(checkDuplicateNames1.java:47)
at Lending.Loan.jButton1ActionPerformed(Loan.java:229)
at Lending.Loan.access$200(Loan.java:23)
at Lending.Loan$3.actionPerformed(Loan.java:131)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我的文本文件的内容是这样的

rodchris~toledo~2221~unpaid~2017/07/20 18:40:30

最佳答案

您尝试将每一行分成 5 部分并阅读它们,而不检查每行是否都有这 5 部分。 该错误表明,您正在尝试访问数组中索引为 1 的项目,而该数组中没有索引为 1 的项目。 我猜想,您有一个大小为 1 的数组(其中唯一的项具有索引 0),因为您正在读取的行不包含波浪号(用于分割行的分隔符)。 您的文件中可能有一个空行。也许只是因为文件末尾的换行或回车。

关于java - 从文本文件中的一行拆分 String[] 数组时出错 "Exception in thread "AWT-EventQueue- 0"java.lang.ArrayIndexOutOfBoundsException: 1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264958/

相关文章:

java - 如何让 eclipse 识别预处理器语句?

java - InitializingBean和DisposableBean是标记接口(interface)吗?

java - 根据条件获取 vector 索引位置

java - 与按需执行文件查找相比,什么时候在初始化时从文件加载所有数据更好? ( java )

java - 如何使用 Eclipse 在虚拟机上进行开发?

java - 如何使用 MyFaces Trinidad 输入日期组件?

java - 用泛型类实现 Comparable

java - REST POST 不支持的媒体类型

Java 字符串插入排序未按预期工作

java - SQL Server JDBC 驱动程序 4.0 支持 JDK 1.5 和 JDK 1.6