A reader class 误读了一个txt(保存的每个字符串末尾为0false)

A reader class misreading a txt (0false at the end of each string saved)

我创建了一个 reader class 来接收 ArrayList 并开始读取 .txt 以将每一行保存在 carreer 的新元素中(每次 reader 发现一个带有文本的新行,它向 ArrayList 添加一个新元素)。它之所以有效,是因为当我打印 ArrayList 的内容时,reader 真正保存了内容,但最后有一个 0false。 这就是我在主 class:

上所做的
ArrayList<Carrera> clista = new ArrayList<Carrera>();
CarreraReader lectorCarrera = new CarreraReader();
lectorCarrera.leer(clista);

这是我的方法 reader class:

public void leer(ArrayList<Carrera> clista) throws FileNotFoundException {

    Scanner s = new Scanner(new File("thetext.txt"));

        while(s.hasNextLine())
        {
            Carrera cq = new Carrera();
            cq.setNombre(s.nextLine());
            clista.add(cq);
        }

所以它节省了很多表明大学生涯的字符串,但是这样: 例如:

Engineering0false
Art0false
Law0false
Agronomy0false

如何防止 reader 在每个字符串的末尾保存 0false?我做错了什么吗?我在一个 class 项目中尝试了同样的 reader 并且它工作得很好,没有一个字符串在最后有一个 0false

这是我的 Carrera class 实现:

package paquete;

public class Carrera {

    private String nombre;
    private int duracion;
    private String codigo;
    private boolean acreditado;

    public Carrera() {
        nombre="";
        duracion=0;
        codigo="";
        acreditado=false;
    }

    public Carrera(String nombre, int duracion, String codigo, boolean acreditado) {
        this.nombre=nombre;
        this.duracion=duracion;
        this.codigo=codigo;
        this.acreditado=acreditado;
    }

    public String getNombre() {
        return nombre;
    }


    public void setNombre(String nombre) {
    this.nombre = nombre;
    }

    public int getDuracion() {
        return duracion;
    }

    public void setDuracion(int duracion) {
        this.duracion = duracion;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public boolean isAcreditado() {
        return acreditado;
    }

    public void setAcreditado(boolean acreditado) {
        this.acreditado = acreditado;
    }

    public String toString()
    {
        return nombre;
    }
}

这是我打印内容的方式:

int i;
for(i=0;i<clista.size();i++){
System.out.println(clista.get(i));
}

为什么不使用字符串拆分方法?您可以将“0false”参数作为参数传递并仅保存您想要的部分。

while(s.hasNextLine())
    {
        Carrera cq = new Carrera();
        String name = s.nextLine());
        cq.setNombre(name.split("false0")[0]);
        clista.add(cq);
    }