Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 09. 09. 2012 16:07 — Editoval tabmar420 (09. 09. 2012 16:16)

tabmar420
Zelenáč
Příspěvky: 6
Reputace:   
 

Java: Počet výskytů číslice v souboru.txt

Ahoj,
chtěl bych požádat někoho, kdo se trochu vyzná v Javě (apod.), jestli by mi nemohl shlédnout jeden úsek kódu. Jde o program, který načte číslice z textového souboru (pouze 1-9) a následně zobrazí na výstupu něco jako:
- číslice 1 je v souboru a-krát
- číslice 2 je v souboru b-krát
- ... atd.

Kód je zkompilovatelný, ale bohužel zobrazuje správný počet pouze u číslice "1" (která se zjišťuje v algoritmu jako první). U dalších program vypisuje hodnotu "0-krát". Opakované prohledávání jsem řešil for cyklem, ale zřejmě ne úplně dobře. :-/ Zasekl jsem se a nemůžu odhalit chybu! :-)) Pomůže někdo?

Problém je jistě v části:

for (byte k = 1; k < 10; k++) {
    byte x = 0;
    while ((strLine = br.readLine()) != null) {
        String[] s = strLine.split(" ");
        for (int i = 0; i < s.length; i++) {
            if (s[i].equals(String.valueOf(k))) {
                x += 1;
            }
        }
    }
    System.out.println(k+" je v souboru "+x+" krat");
}


Code:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
 
public class dva {
    public static void main(String[] args) {
        
        try {
            FileInputStream fis = new FileInputStream("soubor.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            String strLine;
            
            for (byte k = 1; k < 10; k++) {
                byte x = 0;
                while ((strLine = br.readLine()) != null) {
                    String[] s = strLine.split(" ");
                    for (int i = 0; i < s.length; i++) {
                        if (s[i].equals(String.valueOf(k))) {
                            x += 1; 
                        }
                    }
                }
                System.out.println(k+" je v souboru "+x+" krat");
            }
            
        }
        catch(Exception e) {
            System.out.println(e);
        }

    }
}

soubor.txt:
1 4 9 8 9
1 5 4 3 1 5 1 7 1 9
2 1 2 3 2 4 2 7 3 9
3 1 3 3 3 5 3 7 3 9
4 1 4 3 4 5 4 7 4 9
5 1 5 3 5 4 5 7 5 9
6 1 6 3 6 6 7 6 9 4
7 4 7 3 7 5 7 7 7 9
8 1 8 3 8 5 8 7 8 9
9 1 9 3 9 5 9 7 9 9

Offline

  • (téma jako vyřešené označil(a) tabmar420)

#2 09. 09. 2012 16:39

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: Java: Počet výskytů číslice v souboru.txt

řekl bych, že po spočítání jedniček se nevrátíš na začátek souboru, tudíž už žádný další čísla nenapočítáš

Offline

 

#3 09. 09. 2012 17:18 — Editoval tabmar420 (09. 09. 2012 17:19)

tabmar420
Zelenáč
Příspěvky: 6
Reputace:   
 

Re: Java: Počet výskytů číslice v souboru.txt

Díky! Asi to bylo skutečně tím. Vyřešil jsem to sice ne-příliš čistě, ale funguje to. ↑ Stýv:

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson