我正在尝试导入存储在.txt文件中的值,并使用数组将其存储在类中。 但我不能这样做我得到ArrayIndexoutofboundException1错误。 能帮帮我吗。
我的文字文件是这样的
#查看所有文本
#这里的东西
91220菲格罗亚&博览会213-749-9302
91220菲格罗亚&博览会213-749-9302
91220菲格罗亚&博览会213-749-9302
91220菲格罗亚&博览会213-749-9302
我有一个名为prereqclass的类 这是我的代码
if(context.getAttribute(“Preqattr”)== null)
{
ArrayList<prereqclass> prereqcl = new ArrayList<prereqclass>();
String file = this.getServletContext().getRealPath("/") + "download.txt";
try{
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
if (line.trim().startsWith("#")) {
// do nothing
System.out.println("Entering # loop");
}else{
System.out.println("Entering the lines");
String[] tokens = line.split("/t");
prereqcl.add(new prereqclass(tokens[0].trim(),tokens[1].trim(),tokens[2].trim() ) );
System.out.println("Attempt Success");
for (String token : tokens)
System.out.println("\t" + token.replace('"', ' ').trim() );
System.out.println("-------------------");
}
}
br.close();
context.setAttribute("Preqattr", prereqcl);
}
catch(IOException e){
e.printStackTrace();
}
}
这是错误 java.lang.ArrayIndexOutOfBoundsException:1 在prereq.prereqserv.init(prereqserv.java:64)
答案 0 :(得分:0)
解决此类问题的正确方法是逐行逐步执行代码。设置错误所在的断点,然后查看每个变量并确定变量是否应该是它应该是什么。如果不是,那么再次尝试单步执行代码,看看变量是如何进入坏状态的。
正如一个暗示我猜测令牌并没有你想象的那么多。你应该检查一下为什么会这样。
答案 1 :(得分:0)
这一行:
String[] tokens = line.split("/t");
可能是尝试拆分制表符分隔的行,但是您使用的是正斜杠而不是反斜杠。它应该是:
String[] tokens = line.split("\t");
在尝试索引之前,您应该检查tokens
的长度,以帮助捕获这些类型的错误。即使进行了上述更改,如果您遇到因任何原因未按制表符分隔的行,您将获得相同的异常。我建议使用长度检查包装您访问tokens
数组的代码:
if (tokens.length >= 3) {
prereqcl.add(new prereqclass(tokens[0].trim(),tokens[1].trim(),tokens[2].trim() ) );
}
else {
System.out.println("Only found " + tokens.length + " tokens.");
}