Napisałem kod, aby znaleźć częstotliwość każdej litery alfabetu w pliku TXT w Javie i napisz wyniki w innym pliku. Problem polega na tym, że Frekuenca (tekst String) ma błąd, ponieważ musi zwrócić wynik typu ciąg .Can myślisz o sposobie rozwiązania? Dziękuję Ci!

public class Frekuenca_File {

    public static void main(String args[]) throws FileNotFoundException {
        Scanner input = new Scanner(new File("teksti.txt"));
        PrintStream output = new PrintStream(new File("frekuenca.txt"));
        while (input.hasNextLine()) {
            String fjala = input.next();
            output.print(frekuenca(fjala));
        }
    }

    public static String frekuenca(String text) {
        int frekuenca = 0;
        for (int i = 'a'; i <= 'Z'; i++) {
            for (int j = 0; j < text.length() - 1; j++) {
                if (i == text.charAt(j)) {
                    frekuenca++;
                }
            }
            String result = "" + i + ":" + frekuenca;
            return result;
        }

    }
}
-1
Malvina 5 czerwiec 2018, 01:35

4 odpowiedzi

Najlepsza odpowiedź

Więc tutaj, co zrobiłem:

static int[] counts = new int[26]; {{
       Arrays.fill(counts, 0);  //Fill the array with zeroes
}}
static String alph = "abcdefghijklmnopqrstuvwxyz";     

    public static void main(String[]args) throws IOException {
        Scanner input = new Scanner(new File("input.txt"));
        PrintStream output = new PrintStream(new File("output.txt"));
        while (input.hasNextLine()) {
            String fjala = input.next();
            countLetters(fjala);
        }
        for(int i =0; i < counts.length; i++) {
            output.println(alph.charAt(i) + " : " + counts[i]);
        }
    }
    public static void countLetters(String text) {

        for (int i = 0; i < alph.length(); i++) {
            for (int j = 0; j < text.length(); j++) {
                if (alph.charAt(i) == text.charAt(j)) {
                    counts[i]++;
                }
            }
        }
    }

Logika:

Utwórz statyczną tablicę, aby śledzić, ile razy występuje każda litera. Mieć String ze wszystkimi literami i użyciem charAt(), aby przejść przez wszystkie litery. Na końcu wydrukuj wszystkie odpowiednie litery i litera liczy się do pliku.

Daj mi znać, jeśli masz jakieś pytania!


Plik wejściowy:

aaaa
bb
cc
ddddd
eee
fff
j
ddd

Plik wyjściowy:

 a : 4
 b : 2
 c : 2
 d : 8
 e : 3
 f : 3
 g : 0
 h : 0
 i : 0
 j : 1
 k : 0
 l : 0
 m : 0
 n : 0
 o : 0
 p : 0
 q : 0
 r : 0
 s : 0
 t : 0
 u : 0
 v : 0
 w : 0
 x : 0
 y : 0
 z : 0
0
GBlodgett 4 czerwiec 2018, 23:12

Aby odpowiedzieć na twoje pytanie, zawsze możesz zwrócić obiekt zerowy łańcuch. Jednak podejstałem problem inaczej. Parse plik tekstowy do znaków. Przechowuj liczbę zdarzeń 26 liter w tablicy rozmiaru 26 (0 - 25). Indeks 0 to liczba itp. Każdy znak ma numer 8 bitów. Na przykład A wynosi 97. (Wyszukaj tabelę ASCII). Więc indeks tablicy, który ma być zwiększany, jest char (wartość ASCII) odejmowana przez 97. Tak więc 97 - 97 oznacza indeks 0. B wynosi 98 - 97 oznacza indeks 1.

0
Paul Blackburn 5 czerwiec 2018, 00:28

Utwórz prostą funkcję łańcucha w ten sposób:

public static void main (String[] args) {
    String output = make_string("tyrone", 5);
    System.out.println(output);     
}

public static String make_string(String string, int x) {
    String return_string = (string + ":" + x);
    return return_string;
}
-1
mikey_nic 4 czerwiec 2018, 22:47

W funkcji Frekuenca, w pętli .... I = "A" i I <"Z", to powodujący błąd I jest całkowitą i porównując z charakterem, więc po prostu wykonaj pismo lub użycie wartości ASCII do pętli lub można użyć Funkcja CHARAT (): dla (int i = (int) a; i <= (int) z; i ++) char a = 'a'char z =' z 'Podczas przechowywania zmiennej wyników "wynik" jest ciągiem i jestem Integer Nie można przechowywać liczby całkowitej w sznurku ..... Czy wpisanie I pierwszy do postaci: Wynik ciąg = "" + (Char) I + ":" + Frekuenca;

Zobacz link

Jak policzyć częstotliwość znaków w ciągu?

https://www.geeksforgeeks.org/print-characters-Frequence-order-OCCurrence/

Konwertuj int do Char w Javie

-1
Sana 4 czerwiec 2018, 23:22