2016-04-01 2 views
1

ArrayListを受け取るリーダークラスを作成し、.txtの読み取りを開始して、各行をcarreerの新しい要素に保存しますリーダはテキ​​ストを含む新しい行を見つけ、ArrayListに新しい要素を追加します)。これは、ArrayListのコンテンツを印刷すると、読者は内容を保存しますが、末尾に0falseが含まれているためです。 これは私が私のメインクラスに何をしたかである:リーダークラスがtxtを誤読する(各文字列の終わりに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を保存するから読者を防ぐことができますか?私が間違ったことは何ですか?私は同じクラスのプロジェクトでこの同じリーダーを試してみましたが、それは完璧に働きました。最後に0falseの文字列はありませんでした。

これは私のカレラクラスの実装です:

ここ
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)); 
} 
+0

投稿 'Carrera.setNombre(String)'してください。そして、あなたが保存された 'String'(s)をどのように決定しているのですか? –

+0

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

+0

この行が' cq.setNombre(s.nextLine()); 'を実行した後に' cq'に何が起きているのかをデバッガを使って確認してください。それがまさにそれでなければならない場合、問題はおそらくあなたの印刷コードにあるでしょう。 –

答えて

0

は、なぜあなたは文字列のsplitメソッドを使用していけませんか?引数として "0false"引数を渡し、必要な部分だけを保存することができます。

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

はうまくいった!ありがとう、しかし、彼はあなたのプロジェクトを見渡すとき、これは教授にとって信頼できますか? –

+0

haha​​。これはとてもハッキーです! –

+0

なぜですか?あなたはstring =を操作しているだけです) –

関連する問題