Licznik liter

Odpowiedz Nowy wątek
2019-09-24 11:10

Rejestracja: 9 miesięcy temu

Ostatnio: 2 tygodnie temu

0

Witam. Kolejne zadanie od początkującego:
Napisz program, który wyświetla prośbę o podanie łańcucha znaków, a następnie o wprowadzenie znaku. Program powinien zliczyć i wyświetlać liczbę wystąpień określonego znaku w łańcuchu.
Co jest jasne:

  • wyświetlanie prośby o podanie łańcucha znaków
    Z czym problem?:
  • Pierwszy raz spotykam się z pobieraniem char. Czy .next().charAt(0) będzie ok?
  • Zliczenie i wyświetlenie ilości wystąpień wprowadzonego char

Z góry dziękuje za pomoc


Pozostało 580 znaków

2019-09-24 11:17

Rejestracja: 2 lata temu

Ostatnio: 5 godzin temu

Lokalizacja: 74.7261832, -41.7409518

0

I co masz już zrobione? Nadal nie widzę żadnego problemu, potrzebujesz coś to szukasz w internetach.

talk is cheap show me the code

edytowany 1x, ostatnio: krancki, 2019-09-24 11:18

Pozostało 580 znaków

2019-09-24 11:22

Rejestracja: 1 rok temu

Ostatnio: 3 minuty temu

Lokalizacja: Silesia

3
public class HelloWorld {

     public static void main(String[] args) {
        String readString = "Scala forever! Because is better then Java";
        char readChar = 'e';
        long count = readString
            .chars()
            .mapToObj(c -> (char) c)
            .filter(c -> c ==  readChar)
            .count();
        System.out.println(count);
     }
}

Wczytywanie zmienych trzeba by dorobić jeszcze


Jak mogłeś dać tak trudny kod początkującemu? :( Przecież fory i zmienne pomocnicze są prostsze. Wstydź się! - kixe52 2019-09-24 12:03
Niestety nie rozumiem zmiennego stanu i pętli for :( - KamilAdam 2019-09-24 12:06
fory nie są prostsze, są ultra pokiełbaszone - jarekr000000 2019-09-24 13:36
Z tym trudnym to żartowałem ironizując. Po prostu początkujący mają problemy z whileami itp, a co dopiero widząc kod na streamach. Zresztą komu ja to tłumaczę ;) - kixe52 2019-09-24 13:41
@kixe52: właśnie różnie. My jestesmy od dawna do pętli i zmiennych przyzwyczajeni, bo tak się uczyliśmy. Jest cała masa ludzi, którzy jak widzą x = x+1 pierwszy raz to im wypala mózg. Zresztą, to nawet debilnie wygląda, trudno się dziwić. - jarekr000000 2019-09-24 13:44
Zgadzam sie. Pamietam jak dzis jak sie uczylem o FOR to mi wykrecalo mozg. Przy Lisp i FORTH nie mialem takiego wrazenia. - vpiotr 2019-09-25 14:41

Pozostało 580 znaków

2019-09-24 11:41

Rejestracja: 9 miesięcy temu

Ostatnio: 2 tygodnie temu

0
Kamil Żabiński napisał(a):
    long count = readString
        .chars()
        .mapToObj(c -> (char) c)
        .filter(c -> c ==  readChar)
        .count();
 }

Ok, to pomaga, ale wydaje mi się, że powinna być jakaś łatwiejsza droga. Jest to zadanie z ćwiczeń dla mocno początkujących osób z zerową wiedzą z zakresy programowania. Mój kod wygląda teraz tak:

import java.util.Scanner;
Scanner input = new Scanner(System.in);

    // prosba o podanie lancucha znakow
    System.out.println("Wprowadz zdanie:");
    String a = input.nextLine();

    //prosba o wprowadzenie znaku
    System.out.println("Wprowadz znak by sprawdzic ile razy wystepuje w zdaniu:");
    char b = input.next().charAt(0);

    // ile razy wystepuje okreslony znak?
    long c = a
            .chars()
            .mapToObj(d -> (char) d)
            .filter(d -> d == b)
            .count();
    System.out.println(c);

Działać, działa, ale czy można to uprościć?


Pozostało 580 znaków

2019-09-24 12:08

Rejestracja: 1 rok temu

Ostatnio: 3 godziny temu

0

@Kamil Żabiński: dał Ci najszybszy sposób.

Jak chcesz zrobić to "po początkującemu" to przejdź forem po wczytanym zdaniu/napisie i sprawdzaj znak po znaku czy równa się danemu znakowi. Jeśli tak to inkrementuj licznik (wcześniej dokonaj inicjalizacji na 0).

Pozostało 580 znaków

2019-09-24 12:34

Rejestracja: 5 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Warszawa

1

@TheLearner: Moja podpowiedź dla Ciebie, jest taka metoda jak toCharArray
Chyba pętle i instrukcje warunkowe już znasz?


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2019-09-24 17:03

Rejestracja: 1 rok temu

Ostatnio: 3 miesiące temu

1

String a = "", b = "";
Scanner s = new Scanner( System.in );

    System.out.println( "Podaj łańcuch znaków: " );
    a = s.nextLine();
    while ( b.length() != 1 )
    {
        System.out.println( "Podaj jeden znak z ciągu znaków: " );
        b = s.next();
    }

    int licznik = 0;
    for ( int i = 0; i < a.length(); i++ )
    {
        if ( b.equals(a.charAt( i ) +"") )
            licznik++;
    }
    System.out.println( "Liczba wystąpień znaku: " + licznik );

Łatwiejsza opcja

Pozostało 580 znaków

2019-09-24 17:11

Rejestracja: 5 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Warszawa

1

Nieprawda, samo zliczanie może być łatwiesze


for (char i: str.toCharArray()){
            if (c == i) {
                count++;
            }
}    

c to jest zliczany znak, str to string


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2019-09-24 17:32

Rejestracja: 9 miesięcy temu

Ostatnio: 2 tygodnie temu

0

Dzięki wszystkim za pomoc, wszystko jest zrozumiałe i działa, ale wciąż nie tego szukam. Chodzi o to, że korzystam z ćwiczeń które nakazują użycia wiedzy z określonych, zamkniętych działów książki. Żadne z podanych rozwiązań (chociaż poprawne) nie mieści się w tym zakresie książki, a tym samym po prostu sam nie wiem czego z tego działu nie zrozumiałem. A czegoś nie zrozumiałem, skoro nie potrafię tego zrobić. Nie jestem też w stanie wypisać jakie metody etc zawiera dział, bo jest tego dużo.
Tak czy siak dziękuje za pomoc, muszę chyba po prostu czytać dział od początku do końca do skutku aż wyłapie o co chodziło autorowi ćwiczenia.
Pozdrawiam


XD To może daj chociaż tytuł tego działu? Nie chce mi się wierzyć, że masz zadanie zliczyć ilość wystąpień danego znaku w napisie i nie możesz użyć do tego pętli for... - kixe52 2019-09-24 17:35

Pozostało 580 znaków

2019-09-24 17:35

Rejestracja: 5 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Warszawa

0

@TheLearner: a możesz powiedziec to co za ksiązka i który rozdział? Bo aż sam jestem ciekaw. Może jest słabo napisana, a może zakłada że sam powinienes móc poszukac rozwiązania w jakims stopniu :)


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2019-09-24 17:38

Rejestracja: 9 miesięcy temu

Ostatnio: 2 tygodnie temu

0

Java dla zupełnie początkujących, Tony Gaddis, wydanie VII, rozdział 4. Do tej pory byłem w stanie wszystko robić na podstawie wiedzy w działach, ale możliwe, że faktycznie tak jest. Wtedy niepotrzebnie się męczę.


edytowany 1x, ostatnio: TheLearner, 2019-09-24 17:39
A jaki rozdział? - scibi92 2019-09-24 17:39

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0