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