数组解析错误。。。ArrayIndexOutOfBoundsException 1 JAVA
在标题中,我的数组有一个错误。这是什么意思
还有,我该如何解析文件以删除结尾处的所有垃圾,比如输入空格。。。(就像马车返回了几次,空行……我不知道这些是什么……它们肯定不是空白……)
编辑:我现在要睡觉了。我会早起,在别人的帮助下设法解决它。谢谢大家
while (scanner1.hasNextLine() && scanner2.hasNextLine())
{
String line1 = scanner1.nextLine();
String line2 = scanner2.nextLine();
// parse line1
String[] line1Tokens = line1.split(",");
// parse line2
String[] line2Tokens = line2.split(",");
// Print
String ticket = line1Tokens[0];
String arrived1 = line1Tokens[2];
String arrived2 = line1Tokens[3];
String pickup1 = line2Tokens[1];
String pickup2 = line2Tokens[2];
这就是整个方法:
public static void merge(File file1, File file2) throws IOException
{
Scanner scanner1 = new Scanner(file1);
Scanner scanner2 = new Scanner(file2);
String trash = scanner1.nextLine();
String trash2 = scanner2.nextLine();
while (scanner1.hasNextLine() && scanner2.hasNextLine())
{
String line1 = scanner1.nextLine();
String line2 = scanner2.nextLine();
// parse line1
String[] line1Tokens = line1.split(",");
// parse line2
String[] line2Tokens = line2.split(",");
// Print
String ticket = line1Tokens[0];
String arrived1 = line1Tokens[2];
String arrived2 = line1Tokens[3];
String pickup1 = line2Tokens[1];
String pickup2 = line2Tokens[2];
System.out.println("Ticket: " + ticket + ", " +
"Arrived: " + arrived1 + ":" + arrived2 + " --- " +
"Pickup: " + pickup1 + ":" + pickup2 + " --- " +
"Cost: ");
}
}
我收到的错误是:
Ticket: 1421, Arrived: 12:8 --- Pickup: 12:9 --- Cost:
Ticket: 1422, Arrived: 12:8 --- Pickup: 12:12 --- Cost:
Ticket: 1423, Arrived: 12:9 --- Pickup: 12:13 --- Cost:
Ticket: 1424, Arrived: 12:9 --- Pickup: 12:14 --- Cost:
Ticket: 1425, Arrived: 12:9 --- Pickup: 12:16 --- Cost:
Ticket: 1426, Arrived: 12:9 --- Pickup: 12:17 --- Cost:
Ticket: 1427, Arrived: 12:10 --- Pickup: 12:18 --- Cost:
Ticket: 1428, Arrived: 12:10 --- Pickup: 12:19 --- Cost:
Ticket: 1429, Arrived: 12:11 --- Pickup: 13:21 --- Cost:
Ticket: 1430, Arrived: 12:12 --- Pickup: 13:7 --- Cost:
Ticket: 1431, Arrived: 12:14 --- Pickup: 13:9 --- Cost:
Ticket: 1432, Arrived: 12:17 --- Pickup: 13:16 --- Cost:
Ticket: 1433, Arrived: 12:19 --- Pickup: 13:19 --- Cost:
Ticket: 1434, Arrived: 12:21 --- Pickup: 13:20 --- Cost:
java.lang.ArrayIndexOutOfBoundsException: 1
at ParkingLot.merge(ParkingLot.java:45)
at LotDriver.main(LotDriver.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
编辑:所以我开始用我获得的所有信息更正它
这是我到目前为止的方法代码
public static void merge(File file1, File file2) throws IOException
{
Scanner scanner1 = new Scanner(file1);
Scanner scanner2 = new Scanner(file2);
String trash = scanner1.nextLine();
String trash2 = scanner2.nextLine();
while (scanner1.hasNextLine() && scanner2.hasNextLine())
{
String line1 = scanner1.nextLine();
String line2 = scanner2.nextLine();
String ticket = "";
String arrived1 = "";
String arrived2 = "";
String pickup1 = "";
String pickup2 = "";
// parse line1
// String[] line1Tokens = line1.split(",");
// parse line2
// String[] line2Tokens = line2.split(",");
if (line1.contains(","))
{
String[] line1Tokens = line1.split(",");
// Print
ticket = line1Tokens[0];
arrived1 = line1Tokens[2];
arrived2 = line1Tokens[3];
}
if (line2.contains(","))
{
String[] line2Tokens = line2.split(",");
pickup1 = line2Tokens[1];
pickup2 = line2Tokens[2];
}
System.out.println("Ticket: " + ticket + ", " +
"Arrived: " + arrived1 + ":" + arrived2 + " --- " +
"Pickup: " + pickup1 + ":" + pickup2 + " --- " +
"Cost: ");
}
}
然而,它仍然给了我一个错误
java.lang.ArrayIndexOutOfBoundsException: 1
at ParkingLot.merge(ParkingLot.java:45)
at LotDriver.main(LotDriver.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
有人帮忙吗?如何设置数组以解决-1所有问题
# 1 楼答案
如果要删除空白,只需像这样使用trim()
如果这无法删除新行和回车,请使用以下方法:
这将删除所有行分隔符
如果你想在阅读文件时跳过这些行,这里有很多答案和检查方法: How do I check that a Java String is not all whitespaces?
# 2 楼答案
第一个问题: 这意味着您试图访问数组中大于该数组长度的元素
其次。 您可以使用
String.contains(CharSequence s)
检查您读取的文本中是否有逗号,如果没有,则在循环中跳过它,当然,如果所有有效行都必须有逗号来分隔值