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

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

1

Pobieznie przejrzałem co jest w spisiie treści, wydaje sie że podstawa wiedza ogólna w tym rozdziale jest wystarczająca. Ale nie przejmuj się, jestes początkujący, może nie wpadłeś jeszcze na rozwiązanie ;)

0

Jak oceniasz tą książkę? bo wyszła w tym roku i zastanawiałem się nad kupnem. Postaraj się poszukać informacji na stackoverflow. i może coś skojarzysz

0

https://www.udemy.com/java-the-complete-java-developer-course/

Cena 42 zł

Kurs załatwia temat gruntownego poznania podstaw Java.
80 godzin nauki na Javy.

1
Dawid040791 napisał(a):

Jak oceniasz tą książkę? bo wyszła w tym roku i zastanawiałem się nad kupnem. Postaraj się poszukać informacji na stackoverflow. i może coś skojarzysz

Jako osobie na samym starcie nauki ciężko mi ocenić, ale kupiłem trzy książki do Javy i ta jest dla mnie najbardziej zrozumiała + posiada ćwiczenia. Część ćwiczeń ma też klucz, ale mniejszość. Dwie pozostałe były czarną magią i dopiero po zapoznaniu się z tą, zaczynam też rozumieć co w poprzednich pisało. Dla takich jak ja chyba godna polecenia, a jak ktoś umie programować w innym języku to pewnie się zanudzi.

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