从文本文件中提取单独的代码并将其存储到数组中以供进一步使用



所以我应该从文本文件中读取ID,用户名,密码(它们由"~!~"分隔( 1~!~Jhon~!~12345 2~!~马克~!~12345 3~!~琳达~!~abcde 4~!~玛丽~!~qwerty 这是文本文件的样子,即使我的输入是 (1 Jhon 12345(,我的代码也总是提示 false。

public boolean LoginAsAdmin (int myID,String myUserName,String myPassword( 抛出 FileNotFoundException{

File myFile = new File ("D:\Java\DATA.txt");
Scanner Writer = new Scanner(myFile);
int j = 0;
while (Writer.hasNext()){
Admin myAdmin1 = new Admin();
String output = Writer.nextLine();
StringTokenizer Data = new StringTokenizer(output,"~!~");
if(
myAdmin1.setID(Integer.parseInt((String) Data.nextToken()))&&
myAdmin1.setUserName((String) Data.nextToken())&&
myAdmin1.setPassword((String) Data.nextToken())){
myAdmin[j] = myAdmin1;

}
j++;
}
for (int i = 0; i < j; i++){
if(myAdmin[i].getID() == myID && myAdmin[i].getUserName().equals(myUserName) && myAdmin[i].getPassword().equals(myPassword)){
return true;
}
}
return false;
}

您不想将nextTokenif语句放在一起,因为如果第一个testfalse,它将提前失败 - 我也不确定为什么你的setters返回布尔值。

首先,我建议您使用BufferedReader从文本文件中读取行 - 有关示例,请参阅 https://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/。

然后对于每一行

String arr[] = inputStr.split("~!~");
for (int i = 0; i < arr.length; i = i + 3) {
Admin myAdmin1 = new Admin ();
String id = arr[i];
myAdmin1.setId (id);
String name = arr[i + 1];
myAdmin1.setUsername (name);
String passwd = arr[i + 2];
myAdmin1.setPassword (passwd)
myAdmin[i % 3] = myAdmin1;
System.out.printf("%d %s %s%n", Integer.parseInt(id), name, passwd);
}

最新更新