我创建了一个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);
}