从文本文件中的行拆分字符串[]数组时出错;“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutOfBoundsException:1“;
这是我的“checkDuplicateNames1”方法,我对java还是个新手,下面是我的代码从文本文件中的行拆分字符串[]数组时出错;“线程中的异常”;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
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