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. 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 Grundlagen Training weiter --> *Klick*
  3. 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. Danke mrBrown,
    aber wenn ich statt 1/2 0.5 verwende, zeigt es dennoch 0.0 an.
     
  5. 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. "wort" ist ein double.
     
  7. wort ist ein Array (möglicherweise von double)

    gleich aber vermutlich nicht.
     
  8. 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. 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. Das war es :D:D:D Du bist der Beste!
     
  11. 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. Kostenloses Java-Grundlagen Training im Wert von 39 €
    Schau dir jetzt hier das Tutorial an und starte richtig durch!