读取文本文件时无限循环

mva*_*vap -1 java buffer inputstream outputstream

我想从文本文件中读取一些数据.这是文本文件中数据的格式:

A,20, ,0
B,30, ,0
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

public ArrayList rechercherSalle() 
{
    String nom;
    String ligne;
    ArrayList<Salle> listeSalles = new ArrayList<Salle>();
    Salle salle = new Salle();
    try {
        InputStream flux = new FileInputStream("salle.txt");
        InputStreamReader lecture = new InputStreamReader(flux);
        BufferedReader buff = new BufferedReader(lecture);
        ligne = buff.readLine();
        while (ligne != null) {
            String[] objetSalle = ligne.split(",");
            nom = objetSalle[0];
            String capacite_maxString = objetSalle[1];
            Integer capacite_max = Integer.parseInt(capacite_maxString);
            String capacite_actuelleString = objetSalle[3];
            Integer capacite_actuelle = Integer.parseInt(capacite_actuelleString);
            String proprietaire = objetSalle[2];
            salle = new Salle();
            salle.setNom(nom);
            salle.setCapacite_max(capacite_max);
            salle.setCapacite_actuelle(capacite_actuelle);
            if(proprietaire == null || proprietaire == "" || proprietaire == "null"){
                salle.setEstReserve(Boolean.FALSE);
            } else {
                salle.setEstReserve(Boolean.FALSE);
            }
            listeSalles.add(salle);
        }
        buff.close(); 
    } catch (Exception e) {
        e.printStackTrace();
    }
    return listeSalles;
}
Run Code Online (Sandbox Code Playgroud)

此代码在while循环中导致无限循环.循环仅在第一行"A"上迭代.我不知道为什么.

有人能帮我吗?

Era*_*ran 5

你忘了阅读循环中的下一行,所以ligne永远不会null进入循环内部:

        ligne = buff.readLine();
        while (ligne != null) {
            String[] objetSalle = ligne.split(",");
            nom = objetSalle[0];
            String capacite_maxString = objetSalle[1];
            Integer capacite_max = Integer.parseInt(capacite_maxString);
            String capacite_actuelleString = objetSalle[3];
            Integer capacite_actuelle = Integer.parseInt(capacite_actuelleString);
            String proprietaire = objetSalle[2];
            salle = new Salle();
            salle.setNom(nom);
            salle.setCapacite_max(capacite_max);
            salle.setCapacite_actuelle(capacite_actuelle);
            if(proprietaire == null || proprietaire == "" || proprietaire.equals("null")) {
                salle.setEstReserve(Boolean.FALSE);
            } else {
                salle.setEstReserve(Boolean.FALSE);
            }
            listeSalles.add(salle);
            ligne = buff.readLine(); // add this
        }
Run Code Online (Sandbox Code Playgroud)

你的代码的另一个问题是比较Strings ==.更改proprietaire == "null"proprietaire.equals("null").