Wie oft wird ein Buchstabe in einem Wort wiederholt?

The Pi

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?
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
 
Achso stimmt, hab ich jetzt verwechselt 😱...
Java:
wort
ist ein Array vom Datentyp String und
Java:
gleich
eine Variable vom Datentyp double.
 
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:
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);
        }
    }

}
 
Ich bin mir nicht sicher. Du hast jedenfalls eine For-Schleife mit i
Java:
for (int i = 0; i < wort.length - gleich && Leben > 0; i++) {
...
}
aber i kommt darin kein einziges Mal vor.
 
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?
 

Zurück
Oben