java - 从文本文件中提取分离的代码并将其存储到数组中以供进一步使用
问题描述
所以我应该从文本文件中读取 ID、用户名、密码(它们由“~!~”分隔)1~!~Jhon~!~12345 2~!~Mark~!~12345 3~!~Linda~!~abcde 4~!~Mary~!~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;
}
解决方案
你不想nextToken
加上一个声明,因为如果第一个是if
它会提前失败- 另外我不确定你为什么要返回布尔值。test
false
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);
}
推荐阅读
- jhipster - 生成后如何禁用 Jhipster 本地存储库自动提交功能?
- powershell - 通过powershell脚本重新排序章鱼步骤
- node.js - 如何在 Nodejs 中使用 POST 请求 HTTP/2 AWS API 流式传输数据?
- ios - 从数组中过滤数据
- scala - 使用 Akka actor 时异常处理的正确方法
- r - 使用 R 从 Google Drive 下载图像文件
- c# - 如何更改@html.editor,以便在我想添加新数据时可以输入它,而在我想编辑时它会被禁用?
- sql-server - 如何正确检索表 ID
- mysql - 客户数据库及其密码与每个客户的用户帐户 银行 WEB APP
- javascript - 自制 slideToggle()