NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Čtečka souboru

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
petr.chatar.anton:2.7.2014 10:48

Ahoj,
mám tento kód:

import java.io.BufferedReader;
import java.io.FileReader;


public class cteckaSouboru {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                // výpis obsahu souboru
                System.out.println("Vypisuji celý soubor:");
                try (BufferedReader br = new BufferedReader(new FileReader("opol14.cop")))
                {
                        String s;
                        int pocet;
                        pocet = 1;
                        while ((s = br.readLine()) != null)
                        {
                                                System.out.println(s.substring(1, 2) );
                        }
                }
                catch (Exception e)
                {
                        System.err.println("Chyba při čtení ze souboru.");
                }
        }

}

Soubor má nějakých 54000 řádků. Pokud se mi v něm ale vyskytne prázdný řádek, program se ukončí a vypíše chybovou hlášku. Dělá mi to ten substring, jak se ošetřuje taková chyba?

 
Odpovědět
2.7.2014 10:48
Avatar
Odpovídá na petr.chatar.anton
Michal Haňáček:2.7.2014 10:56

No když nic jiného, tak bych považoval za správné si ověřit jestli String ze kterého chceš substringem něco vybírat má pozice, ze kterých chceš vybírat (rozuměj je dostatečně dlouhý).

Nahoru Odpovědět
2.7.2014 10:56
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na petr.chatar.anton
Jan Vargovský:2.7.2014 11:02

Koukni na StringUtils.is­NotBlank(strin­g) metodu.

 
Nahoru Odpovědět
2.7.2014 11:02
Avatar
Odpovídá na Michal Haňáček
petr.chatar.anton:2.7.2014 11:09

Jo, myslíš takhle?

if (s.substring(0, 1).equals("c"))
                                {
                                        if (s.length() > 1)
                                        {
                                                System.out.println(Integer.toString(pocet)+ " " + s.substring(0, 1));
                                                pocet = pocet + 1 ;
                                        }
                                }
 
Nahoru Odpovědět
2.7.2014 11:09
Avatar
Odpovídá na petr.chatar.anton
Michal Haňáček:2.7.2014 11:18

Podlě mě to děláš stále stejně zle. Nejdřív použiješ substring a teprve poté zjišťuješ jestli je String dostatečně dlouhý :) . Ale už se blížíš ;) .

Mimo to metoda, kterou ti Jan Vargovský doporučoval by se ti mohla také hodit ...

Nahoru Odpovědět
2.7.2014 11:18
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Michal Haňáček
petr.chatar.anton:2.7.2014 11:23

Jasně, já vím, že to tam mám blbě :). Hloupost, sem to tam plácnul rychle. Jdu se podívat ještě na tu metodu od Jan Vargovský.
Já s Javou teprve začínám, nebyl jsem si jistý, jestli je správně použít IF.

 
Nahoru Odpovědět
2.7.2014 11:23
Avatar
Matěj Kripner
Tvůrce
Avatar
Matěj Kripner:2.7.2014 18:11

Já bych to viděl nějak takto:

System.out.println("Vypisuji celý soubor:");
        try (BufferedReader br = new BufferedReader(new FileReader("opol14.cop")))
        {
            String s;
            int pocet = 0;
            while ((s = br.readLine()) != null)
            {
                if (!s.isEmpty())
                {
                    if((s.charAt(0)) == 'c')
                    {
                        pocet++;
                        System.out.println(pocet + " c");
                    }
                }
            }
        }
        catch (Exception e)
        {
            System.err.println("Chyba při čtení ze souboru: " + e.getMessage());
        }

Neříkam, že to tak je nejlepší, ale snad bude fungovat :)

Editováno 2.7.2014 18:14
 
Nahoru Odpovědět
2.7.2014 18:11
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Matěj Kripner
Jan Vargovský:2.7.2014 18:21

Kdybys chtěl ušetřit trošku místa :)

System.out.println("Vypisuji celý soubor:");
try (BufferedReader br = new BufferedReader(new FileReader("opol14.cop")))
{
       String s;
       int pocet = 0;
       while ((s = br.readLine()) != null && !s.isEmpty() && (s.charAt(0)) == 'c')
              System.out.println(++pocet + " c");
}
catch (Exception e)
{
       System.err.println("Chyba při čtení ze souboru: " + e.getMessage());
}
Editováno 2.7.2014 18:22
 
Nahoru Odpovědět
2.7.2014 18:21
Avatar
Matěj Kripner
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Matěj Kripner:2.7.2014 18:42

Tak jasně no :D

 
Nahoru Odpovědět
2.7.2014 18:42
Avatar
Odpovídá na Jan Vargovský
petr.chatar.anton:3.7.2014 8:22

Udělal jsem to nějak podobně.

 
Nahoru Odpovědět
3.7.2014 8:22
Avatar
petr.chatar.anton:3.7.2014 8:22

Děkuju všem.

 
Nahoru Odpovědět
3.7.2014 8:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.