Child pages
  • txt fileból adatolvasás
Skip to end of metadata
Go to start of metadata

Sziasztok!

Van egy programom, ami egy txt fálból olvas(na) be adatok, majd a beolvasott adatokat, hozzáadja egy listához. És ezt a listát szeretném kiíratni. Így néz ki a kódom:

class Vezerles {
public Vezerles() {
 }
private List<Ital> italok = new ArrayList<>();
 
 void start() {
 beolvasas();
 kiiratas();
 }
 
 public void beolvasas(){
try {
 Scanner scanner = new Scanner(new File("italok.txt"));
 String sor;
 String[] adatok;
 String fajta;
 long vonalKod;
 int mennyiseg, egysegAr;
 while(scanner.hasNextLine()){
 sor = scanner.nextLine();
 adatok = sor.split(";");
 fajta = adatok[0];
 vonalKod = Long.parseLong(adatok[1]);
 mennyiseg = Integer.parseInt(adatok[2]);
 egysegAr = Integer.parseInt(adatok[3]);
 
 italok.add(new Ital(fajta, vonalKod, mennyiseg, egysegAr));
 }
 } catch (FileNotFoundException ex) {
 Logger.getLogger(Vezerles.class.getName()).log(Level.SEVERE, null, ex);
 }
 }
 
 public void kiiratas(){
 for(Ital ital : italok){
 System.out.println(ital);
 }
 }
}

A kód hibátlanul lefut, még sem ír ki semmit a konzolra. Mi lehet a baj?

(a txt fájl a projekt gyökér könyvtárában van) 

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

2 Comments

  1. Szerintem az alábbi két sor közé tegyél egy kiírást (vagy használj debug módot, de egyszerűbb oda tenni egy System.out.println vagy Logger.getLogger().....log(...) sort).

    while(scanner.hasNextLine()){
     sor = scanner.nextLine();

     

    Ezzel kiderül, hogy lefut-e a ciklus egyáltalán akár egyszer is. Használj mindig minél több naplózást, azzal ki tudod deríteni, hogy hol milyen értékek vannak és mi működik másképp, mint gondoltad.

  2. Meg van a hiba: a beolvasni kívánt txt fájl nem UTF-8as kódolású volt, ezért nem tudta olvasni a program.