如何搜索对象以查看它是否包含用户名和密码?
问题描述:
目前我已经有一个文本文件,其中包含用户名和密码,并把它放在一个对象。然而,当试图登录时,它说数组索引超出界限。看不到错误是什么。如何搜索对象以查看它是否包含用户名和密码?
Object[][] data = new Object[UserDetails.size()][2];
for(int i=1; i<UserDetails.size(); i++) {
data[i][0] = UserDetails.get(i)[0];
data[i][1] = UserDetails.get(i)[1];
System.out.println(data[i][0]);
System.out.println(data[i][1]);
boolean match = false;
boolean limit = false;
int i=1;
do{
if((data[i][0] == username) && (data[i][1] == password)){
match = true;
UsernameField.setText(null);
PasswordField.setText(null);
close();
TablePage table;
table = new TablePage(username);
table.setVisible(true);
JOptionPane.showMessageDialog(null, "Sucessfully Logged In","Login Success",JOptionPane.INFORMATION_MESSAGE);
close();
}else{
if(i == UserDetails.size()){
limit=true;
}
i++;
}
} while(match==false || limit == true);
答
如果UserDetails.size() = 0
,则数据的大小是[0] [2]。 后来你设置i = 1,然后有一个if(data[i][0])
。 如果是UserDetails.size() = 0
,这会导致出界限错误;
+0
这不是正确的答案,甚至不解释真正的问题,这个问题也不清楚。 – Omore
问题有点不清楚,有些变量'UserDetails'没有正确地发布在代码中。如果您可以发布所有代码,可能会有所帮助。 –
不要硬编码你的数组索引。 – Omore
为什么你使用这样一个可怕的数据结构?当然你真正需要的是一个'Pair'的数组吗? –
EJP