2016-04-01 14 views
1

ArrayList alan bir okuyucu sınıfı oluşturdum ve her satırı yeni bir öğeye kaydetmek için .txt okumaya başladım (her seferinde okuyucu metin ile yeni bir satır bulur, ArrayList'e yeni bir öğe ekler). Bu, ArrayList'in içeriğini yazdırdığımda, okuyucuyu gerçekten kaydeder, ancak sonunda 0false ile çalışır. Bu benim ana sınıfına ne yaptığını geçerli:Bir txt yanlış okuması yapan bir okuyucu sınıfı (kaydedilen her dizenin sonunda 0parse)

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

Ve bu benim okuyucu sınıfında yöntemdir:

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

Yani bir üniversite kariyerini belirten dizeleri bir sürü kaydeder, ancak bunda yol: örn:

Engineering0false 
Art0false 
Law0false 
Agronomy0false 

nasıl her dizesinin sonunda 0false kaydetmesini okuyucuyu önleyebiliriz? Yanlış yaptığım bir şey var mı? Aynı okuyucuyu tek bir sınıf projesinde denedim ve mükemmel bir şekilde çalıştı, sonunda hiçbir String'in 0false'u yoktu.

Bu benim Carrera sınıf uygulamasıdır: Burada

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

ben içeriği yazdırmak nasıl:

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

Post 'Carrera.setNombre (String)' lütfen. Ve kaydedilen 'String' (ler) 'i nasıl belirliyorsunuz. –

+0

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

+0

Bu satırın cq.setNombre (s.nextLine()); işlevini yürüttükten sonra' cq' 'ye ne olduğunu görmek için bir hata ayıklayıcısını kullanın. Tam olarak olması gerektiği gibi, sorun muhtemelen yazdırma kodunuzdadır. –

cevap

0

Neden dize bölünmüş yöntemi kullanmak yapmıyorsun? Parametre olarak "0parse" argümanını iletebilir ve sadece istediğiniz bölümü kaydedebilirsiniz.

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

işe yaradı! teşekkürler, ama projenize baktığı zaman bir profesör için bu güvenilir midir? –

+0

haha. Bu çok hacky! –

+0

Neden değil? Sadece string =) –

İlgili konular