每次我运行my function SearchByID
时,它都不会返回我需要的必要boolean
运算符。该方法读取Employee.txt
文件并一个接一个地读取文件。我所做的是创建了一个String数组来存储分割的字符串,并使用String.equalsIgnorCase()
方法检查相应的匹配是否与文件中的数据相匹配。这是方法的代码
代码:SearchByID
public static boolean SearchByID(String ID){
boolean bool = false;
int idLoc = 3;
try(BufferedReader bufr = new BufferedReader(new FileReader(EMPLOYEE_TXT))){
String line = bufr.readLine();
/*Split the records into an array*/
String[] lines;
while(line !=null){
//do the macthing of data here
lines = line.split(";");
if(lines[idLoc].equalsIgnoreCase(ID)){
bool = true;
break;
}else{
bool = false;
break;
}
}
bufr.close();
}catch(Exception ex){
ex.printStackTrace();
}
return bool;
}
以下是方法SearchByID(
);
System.out.print("Search user by ID:");
String strID = sID.nextLine();
if(IOLibraries.SearchByID(strID)){
System.out.println("A match has been found");
}else{
System.out.println("No match found");
}
Employee.txt的内容
kadi,bens;male;baliwasan grande;88-11;99111;arg11@gmail.com;400.0
doe,john;male;11311 asdd;99811;9911331;asdf@.sdfcom;500.0
我真正需要做的是我需要读取文件中的所有数据,之后它应该返回正确的boolean
值,以便搜索Employee.txt
文件中的所有用户。< / p>
如果我搜索第一个条目下面的值,我无法检索。例如,如果我搜索id 88-11,我可以正确检索数据,但是如果我在第一个条目(例如99811)下面搜索它将返回false
或“找不到匹配”,即使它在Employee中。 txt文件。
答案 0 :(得分:0)
问题是你在读完第一行后总是会从循环中断开。
else
注意else块。如果第一行与ID不匹配,它将进入bool
块,声明找不到它,然后突然出现。
你应该做的是
found
(或更好地称之为false
)初始化为 while(line !=null){
lines = line.split(";");
if(lines[idLoc].equalsIgnoreCase(id)){
found = true;
break;
}
}
(已经为此完成)即。将循环更改为
{{1}}