Wie oft wird ein Buchstabe in einem Wort wiederholt?

Dieses Thema Wie oft wird ein Buchstabe in einem Wort wiederholt? im Forum "Allgemeine Java-Themen" wurde erstellt von The Pi, 28. Nov. 2016.

Thema: Wie oft wird ein Buchstabe in einem Wort wiederholt? Hallo Forum, ich bin dabei "Hangman" zu programmieren und komme jetzt nicht mehr weiter. Ich wollte eine...

  1. The Pi
    The Pi Neues Mitglied
    Hallo Forum,
    ich bin dabei "Hangman" zu programmieren und komme jetzt nicht mehr weiter. Ich wollte eine for-Schleife erstellen, um automatisch auszurechnen, wie oft ein Buchstabe in einem Wort wiederholt wird.
    Dafür habe ich diesen Code geschrieben, aber es kommt immer "0" heraus. Weiß jemand eine Antwort?
    Code (Java):
    for (int i = 0; i < wort.length; i++) {
                for (int j = 0; j < wort.length; j++) {
                    if(i==j) {
                        gleich = gleich + 0;
                    }
                    else if(wort[i]==wort[j]) {
                        gleich = gleich + 1/2;
                    }
                }
            }
    Gruß,
    The Pi
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. mrBrown
    mrBrown Bekanntes Mitglied
    1/2 ist 0. 1 und 2 sind ganze Zahlen, wenn man die teilt, wird der Nachkommateil abgeschnitten, also kommt 0 raus.
     
    The Pi gefällt das.
  4. The Pi
    The Pi Neues Mitglied
    Danke mrBrown,
    aber wenn ich statt 1/2 0.5 verwende, zeigt es dennoch 0.0 an.
     
  5. mrBrown
    mrBrown Bekanntes Mitglied
    gleich ist sicherlich int? du bekommst bei der Brechung irgendein krummes ergebnis raus, aber wenn du das wieder in dem int speicherst, wird der Nachkommateil wieder abgeschnitten


    Warum willst du denn 0,5 aufaddieren?
     
  6. The Pi
    The Pi Neues Mitglied
    "wort" ist ein double.
     
  7. mrBrown
    mrBrown Bekanntes Mitglied
    wort ist ein Array (möglicherweise von double)

    gleich aber vermutlich nicht.
     
  8. The Pi
    The Pi Neues Mitglied
    Achso stimmt, hab ich jetzt verwechselt :eek:...
    Code (Java):
    wort
    ist ein Array vom Datentyp String und
    Code (Java):
    gleich
    eine Variable vom Datentyp double.
     
  9. mrBrown
    mrBrown Bekanntes Mitglied
    Dann liegt in wort[i]==wort[j] der Fehler, Strings vergleicht man nicht mit ==, sonder mit equals, in dem Fall wort[i].equals(wort[j])[/i][/i]
     
  10. The Pi
    The Pi Neues Mitglied
    Das war es :D:D:D Du bist der Beste!
     
  11. The Pi
    The Pi Neues Mitglied
    Oh Mist. Das Problem jetzt ist es, dass wenn 3 mal der gleiche Buchstabe ist, hört das Programm zu schnell auf...
    Hier der Code:
    Code (Java):
    package hangmaneasy;

    import java.util.Scanner;

    public class HangmanEasy {

        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);

            String w = "JAVAFORUM";
            double gleich = 0;         // WIE OFT WIRD EIN BUCHSTABE WIEDERHOLT?
            String[] wort = w.split("");
            String Benutzereingabe;
            int Leben = 15;
            boolean status = false;
            int Buchstabe = 0;
         
            for (int i = 0; i < wort.length; i++) {
                for (int j = 0; j < wort.length; j++) {
                    if(i==j) {
                        gleich = gleich + 0;
                    }
                    else if(wort[i].equals(wort[j])) {
                        gleich = gleich + 0.5;
                    }
                }
            }    

            String[] ausgabe = new String[wort.length];

            for (int i = 0; i < wort.length; i++) {
                ausgabe[i] = "_";
                System.out.print(ausgabe[i] + " ");
            }
            for (int i = 0; i < wort.length - gleich && Leben > 0; i++) {
                do {
                    if (Leben != 0) {
                        status = false;
                    }
                    Benutzereingabe = s.nextLine();
                    Benutzereingabe = Benutzereingabe.toUpperCase();

                    for (int j = 0; j < wort.length; j++) {
                        if (Benutzereingabe.equals(wort[j])) {
                            ausgabe[j] = wort[j];
                            Buchstabe = 1;
                        }
                        System.out.print(ausgabe[j] + " ");
                    }
                    if (Leben == 0) {
                        status = true;
                    } else if (Buchstabe == 0) {
                        Leben = Leben - 1;
                        if (Leben > 0) {
                            System.out.print(" FALSCHE EINGABE! Du hast noch " + Leben + " Leben übrig!\n");
                        } else if (Leben == 0) {
                            System.out.print(" FALSCHE EINGABE! Du hast 0 Leben. \nJetzt ist es egal, ob der nächste Buchstabe falsch oder richtig ist.\nDU BIST TOT!\n");
                        }
                        for (int j = 0; j < wort.length; j++) {
                            System.out.print(ausgabe[j] + " ");
                        }
                        status = false;
                    } else if (Buchstabe == 1) {
                        status = true;
                    }
                    Buchstabe = 0;
                } while (status == false);
            }
        }

    }
     
     
  12. krgewb
    krgewb Aktives Mitglied
    Ich bin mir nicht sicher. Du hast jedenfalls eine For-Schleife mit i
    Code (Java):

    for (int i = 0; i < wort.length - gleich && Leben > 0; i++) {
    ...
    }
     
    aber i kommt darin kein einziges Mal vor.
     
  13. Hades85
    Hades85 Mitglied
    Mal abgesehen dass der Thread alt ist, ist aber auch an der selbstgestellten Aufgabe vorbei programmiert worden. Es wird permanent die Variable gleich überschrieben und das führt dazu dass lediglich der letzte Buchstabe eines Wortes auf die Häufigkeit überprüft wird. Und das addieren mit null mit der gleich Variable wenn i iterator und j den selben Wert besitzen erschließt sich mir erstmal nicht, genau so wenig das addieren mit 1/2. Und warum ist gleich ein doublewert?
     
  14. thecain
    thecain Aktives Mitglied
    Hört doch jetzt endlich auf den alten sche*** immer auszugraben. Dann am Besten noch mit irgendwas unnützem/falschem
     
    JStein52 gefällt das.
  15. DerWissende
    DerWissende Bekanntes Mitglied
    Frage: irgendein Buchstabe, ein bestimmter Buchstabe, oder der, der am häufigsten vorkommt?
     
  16. DerWissende
    DerWissende Bekanntes Mitglied
    Ich wollte eigentlich schon "loslegen", aber weiß dann doch nicht genau, was gesucht ist. :D
     
  17. Hades85
    Hades85 Mitglied
    Ich hoffe Thecain ist kein mod oder ähnliches.:D Jedenfalls zählt er in seinem Beispiel alle Buchstaben die gleich sind plus die doppelt vorkommen, nur das min. Jeder Buchstabe immer doppelt ist in seinem Bsp..
     
  18. JStein52
    JStein52 Bekanntes Mitglied
    Jaaaaaaaa
     
  19. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)