我创建了一个reader类,该类接收一个ArrayList并开始读取.txt以将每一行保存在carreer的一个新元素中(每次读者找到带有文本的新行时,都会向ArrayList中添加一个新元素)。之所以起作用,是因为当我打印ArrayList的内容时,阅读器会真正保存内容,但最后要带有0false
这是我在主课上所做的:

ArrayList<Carrera> clista = new ArrayList<Carrera>();
CarreraReader lectorCarrera = new CarreraReader();
lectorCarrera.leer(clista);


这是我的阅读器类中的方法:

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


如何防止读者在每个字符串的末尾保存0false?我做错了什么吗?我在一个类项目中尝试了相同的阅读器,并且运行良好,没有String末尾带有0false

这是我的Carrera类实现:

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));
}

最佳答案

为什么不使用String split方法?您可以将参数“ 0false”作为参数传递,并仅保存所需的部分。

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

08-06 17:06