这是我的“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/