使用布尔表达式(JAVA)时,Java循环不能正常退出 - 新手

时间:2016-11-09 02:54:26

标签: regex

每次我运行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文件。

1 个答案:

答案 0 :(得分:0)

问题是你在读完第一行后总是会从循环中断开。

else

注意else块。如果第一行与ID不匹配,它将进入bool块,声明找不到它,然后突然出现。

你应该做的是

  1. 在循环之前将found(或更好地称之为false)初始化为 while(line !=null){ lines = line.split(";"); if(lines[idLoc].equalsIgnoreCase(id)){ found = true; break; } } (已经为此完成)
  2. 如果找到匹配的行
  3. ,则只会中断循环

    即。将循环更改为

    {{1}}