Licznik liter

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

0

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

talk is cheap show me the code

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

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ć?

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).

1

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

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

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

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

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 :)

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