遇到Java数组索引错误
我对Java完全陌生,有一些C#方面的背景。我目前正在使用Eclipse在程序中运行一个方法,将该方法的参数与文本文件中的用户名和密码进行比较
但是,在运行代码之后,我收到了一个名为“java.lang.ArrayIndexOutOfBoundsException=1”的错误。我不明白为什么会这样。下面包含代码和文件我试图只读取上面的三个用户名和密码。下面的其他三个只是填充它并在程序中稍后使用强>
**更新:好的。我已经修复了将令牌更改为令牌[0]和令牌1的问题。但它仍然不起作用
**更新2:另外,这是我调用该方法时包含的代码。下:
s.login("tomrichards", "96744213");
public boolean login (String user, String password) {
FileReader fr = new FileReader ("auth.txt");
LineNumberReader r = new LineNumberReader (fr);
String I = "";
boolean identity = false;
String name = "";
String password = "";
while ((I = r.readLine()) != null) {
String [] token = I.split(";");
name = token[0];
pass = token[1];
if (name.equals(user) && pass.equals(password)) {
identity = true;
System.out.println("Username " + name + "Password " + pass);
return true;
}
else {
identity = false;
return false;
}
}
r.close();
}
**第3次更新:我仔细检查了是否有任何遗漏”在文本文件中,没有
# 1 楼答案
你的文本文件有空行
如果^ {< CD1>}没有任何^ {< CD2>}要拆分,那么就必须考虑得到的数组的大小。
还要注意Java数组是从
0
索引的# 2 楼答案
首先,这看起来很奇怪:
我想你的意思是:
除非文本文件中
;
之前的第一件事是你放弃的其次,文本文件似乎至少有一行没有
;
。搜索并纠正它。如果找不到,可以通过执行以下操作暂时修复此错误:我说的是暂时的,因为这个修复并不是真正解决问题的根源,只是避免读取无效的行
# 3 楼答案
考虑当输入中的一行没有一个^ {CD1>}要拆分的情况。
因此,这会导致ArrayIndexOutOfBoundsException