从文本文件中的行拆分字符串[]数组时出错;“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutOfBoundsException:1“;

从文本文件中的行拆分字符串[]数组时出错;“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutOfBoundsException:1“;,java,Java,这是我的“checkDuplicateNames1”方法,我对java还是个新手,下面是我的代码 public boolean checkDuplicateNames1(String name,String surname) throws FileNotFoundException, IOException{ boolean found = false; BufferedReader reader = new BufferedReader(new FileReader("trans

这是我的“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),因为您正在读取一行,该行不包含平铺(用于分割行的分隔符)。
您的文件中可能有一行空行。可能只是因为文件末尾的换行符或回车符。

您尝试将每行拆分为5个部分,并在不检查每行是否包含这5个部分的情况下读取它们。 错误表示,您正在尝试访问索引为1的项,而该数组中没有索引为1的项。 我猜,您有一个大小为1的数组(其中唯一一项的索引为0),因为您正在读取一行,该行不包含平铺(用于分割行的分隔符)。
您的文件中可能有一行空行。可能只是因为文件末尾的换行符或回车符。

代码似乎是正确的。没问题

因为我也试过你的代码

我的用于读取文件的光化代码剪报是

try (BufferedReader br = new BufferedReader(new FileReader("my.txt"))) {
        String line;
        while ((line = br.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);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
my.txt
的内容是
rodcris~toledo~2221~未付~2017/07/20 18:40:30

上面代码的输出是
运行:
罗德里斯·托莱多2221 2017/07/20 18:40:30未付

生成成功(总时间:0秒)

代码似乎是正确的。没问题

因为我也试过你的代码

我的用于读取文件的光化代码剪报是

try (BufferedReader br = new BufferedReader(new FileReader("my.txt"))) {
        String line;
        while ((line = br.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);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
my.txt
的内容是
rodcris~toledo~2221~未付~2017/07/20 18:40:30

上面代码的输出是
运行:
罗德里斯·托莱多2221 2017/07/20 18:40:30未付

生成成功(总时间:0秒)

我建议您先打印文件的内容,看看它是否真的看到了文件的内容,是否遵循了事务的预期。txt我建议您先打印文件的内容,看看它是否真的看到了文件的内容,是否遵循了事务的预期。txt