Anonymní profil Jakub – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Jakub – Programujte.comAnonymní profil Jakub – Programujte.com

 

Příspěvky odeslané z IP adresy 88.103.1.–

Jakub
Java › Načtení souboru do pole
31. 12. 2013   #185813

Smolím to sám od sebe, takhle mi to vyhazujou NetBeansy, nechápu.

Už se mi to podařilo skoro dát dohromady, je nevím, proč se mi do ArrayListu ukládají všechny řádky do jednoho Arraylistu ... 

public ArrayList Napln (String soubor) throws FileNotFoundException
    {
            FileReader fr = new FileReader(soubor); 
            ArrayList ListPole = new ArrayList<>();
            ArrayList PolePole = new ArrayList<>();
            
            int pocetm = 0;
            
                 try {
                   String radek;
                       BufferedReader in = new BufferedReader(fr);
                       while ((radek = in.readLine()) != null) {
                           pocetm++;
                            String pridat = "";
                            int posledni = 0;
                            String[] zaznam = radek.split("|");
                            for(int m = 0; m < zaznam.length; m++){
                                if ("|".equals(zaznam[m]) && zaznam[m] != null){
                                    pridat = "";
                                        for(int e = posledni+1; e < m; e++) 
                                            pridat += zaznam[e];
                                    ListPole.add(pridat);
                                posledni = m;   
                                }
                                else if(zaznam.length-1 == m){
                                    pridat = "";
                                    for(int e = posledni; e < m; e++) 
                                            pridat += zaznam[e+1];
                                    ListPole.add(pridat);
                                }
                                
                            }
                            PolePole.add(ListPole);
                            //ListPole.clear();
                       }
                       
               }
               catch(IOException e){
                   System.out.println("Chyba - "+e);
               }
       return PolePole;     
    }

Děkuji!!

Jakub
Java › Načtení souboru do pole
30. 12. 2013   #185805

 Jsem nějak pořád mimo :(

            FileReader fr = new FileReader(soubor); 
            ArrayList ListPole = new ArrayList<>();
               try {
                   String radek;
                       BufferedReader in = new BufferedReader(fr); 
                       while ((radek = in.readLine()) != null) {
                           
                            String[] zaznam = radek.split("|"); int posledni = 0;
                            for(int m = 0; m < zaznam.length; m++){
                                if (zaznam[m] == "|"){
                                    String pridat = null;
                                        for(int e = 0; e < m-posledni; e++) 
                                            pridat += zaznam[e];
                                        posledni = m;
                                    ListPole.add(pridat);}
                            }
                            ListPole.add(zaznam);
                        }
                   }
               catch(IOException e){
               
               }
Jakub
Java › Načtení souboru do pole
30. 12. 2013   #185786

#2 Kit
Budu s načteným souborem (.txt) pracovat jako s databází, takže kdyby chyběl záznam ve 'sloupci' (v souboru), tak se to blbě rozdělí, ne (Ne podle struktury, kterou potřebuji ...)?

Jakub
Java › Načtení souboru do pole
30. 12. 2013   #185784

Ahoj,

potřebuji dostat do dvojrozměrného pole soubor, políčka jsou v souboru odděleny znakem - například |, co řádek souboru, to řádek pole. Mám tu sesmolený nějaký kód, na rozeznání sloupců/řádků, ale nějak se mi to nedaří rozdělit do pole.

Můžete mi nějak poradit? Co dělám špatně? Jinak na Javu nejsem zrovna expert, tak prosím, případné rady v nějaké rozumné řeči :D.

Přikládám příkladový soubor a mnou sesmolený kód.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package semestralka;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

    
/**
 *
 * @author Jakub
 */

public class Main {

    int cols;
    int rows;
    String [] [] db = null;
    String soubor;
    char rozdelovac = '|';
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException {
        Scanner nacti = new Scanner(System.in);
        String soubor = "C:\\Users\\Jakub\\Desktop\\";
        InputStream fs = null; 
        // TODO code application logic here
        System.out.println("Zadej nazev souboru (.txt), ktery chcete nacist a potvrdte klavesou enter:");
        System.out.println("Jak ma soubor vypadat se docete v dokumentaci ...");
        System.out.print("Soubor: "); soubor += nacti.next();
        try { 
            fs = new FileInputStream(soubor); 
        } catch( FileNotFoundException e ) { 
            System.err.println("Soubor "+soubor+" nenalezen. Chyba: "+e); 
            System.exit(2); 
        }
        Main volac  = new Main(); // Zajištění volání nestatické metody ze statické
       for (int h = 0; h < volac.Napln(soubor).length; h++)
        { 
            for (int g = 0; g < volac.Napln(soubor).length; g++)
                System.out.print(volac.Napln(soubor)[h][g]);
            System.out.println("");
        } 
      /* System.out.print(volac.Napln(soubor)[0][0]); */

    }    
    public String[][] Napln (String soubor) throws FileNotFoundException
    {
        FileReader fr = new FileReader(soubor); 
               try { 
                       String radek;
                       BufferedReader in = new BufferedReader(fr); 
                       while ((radek = in.readLine()) != null) {
                               
                            int delka = radek.length();
                            char znak;
                            int col2 = 0;

                               for(int i=0; i<delka; i++) {
                                znak = radek.charAt(i);
                                if (znak == rozdelovac) {col2++;} 
                               }
                               if (col2 > cols) cols = col2;
                               col2 = 0;
                               rows++;
                        }
                       
                       db = new String [cols][rows];
                       FileReader fe = new FileReader(soubor);
                       BufferedReader im = new BufferedReader(fe); 
                       int pomrows = 0; int pomcols = 0; int poslpoz =0;
                       String radek2; 
                       while ((radek2 = im.readLine()) != null) {
                               for (int pozice = 0; pozice<radek2.length()-1; pozice++)
                               {
                                   if (radek2.charAt(pozice) == rozdelovac) //dodej rozdelovac
                                    {
                                        if (pozice == cols-1) {db[pomcols][pomrows] = radek2.substring(poslpoz)+" "; break; }
                                        else {
                                            db[pomcols][pomrows] = radek2.substring(poslpoz,pozice);
                                            poslpoz = pozice;
                                            pomcols++;
                                        }
                                   }                                                                  
                               }
                               pomrows++;
                       }
                fr.close();  } 
               catch (IOException e) { 
               System.out.println("Soubor nelze otevřít (Chyba: "+e+" )"); 
               }
        return db;
    
    }
}

 Soubor:

ID|Jmeno Prijmeni|Vek|Adresa
2|Jakub|92|Praha

Děkuji za případné rady!

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý