JavaFX Buchstaben eines Satzes zählen

DerDecane

Aktives Mitglied
Hey Leute, ich muss eine Aufgabe programmieren mit JavaFX die für mich die Anzahl der Buchstaben zählt. Ich soll dann z.b. einen Satz in ein Textfield eingeben und in einer Textarea darunter soll das Ergebnsi rauskommen.

Also z.b. ich gebe "Hallo" ein und unten solle dann h=1, a=1, l=2, o=1 rauskommen.

Das zählen kann ich logischerweise mit einer Schleife von 0 bis text.length(); machen, die Oberfläche habe ich schon gebastelt.

Jetzt zu meiner Frage: Kann ich die Variablen a, b, c, d usw. sprich die Buchstaben irgendwie mit einer Schleife initialisieren und später ausgeben oder muss ich das alles von Hand machen?
 

Thallius

Top Contributor
Du erstellst einfach ein Array von 0-255 int[] anzahlZeichen = new int[256]. Dann gehst du durch deinen String und holst dir den Zeichenwert jedes Zeichens und erhöhst entsprechend den Index im Array. Am Ende kannst Du dann ausgeben wie oft ein Zeichen vorkommt.

Gruß

Claus
 

DerDecane

Aktives Mitglied
Ah super, habs hinbekommen. Hab das Array aber nur auf 123 gesetzt, weil es in der Aufgabe nur um die Kleinbuchstaben a-z gehen soll.

Falls es jemanden interessiert, hier noch der Code:
Code:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Aufgabe5 extends Application {

    @Override
    public void start(Stage primaryStage) {
       
        primaryStage.setTitle("Aufgabe 5");
       
        Label eingabe = new Label ("Eingabe:");
        TextField feld = new TextField();
        Button ok = new Button ("OK");
        TextArea area = new TextArea();
       
        HBox box = new HBox(10);
        box.setPadding(new Insets(0, 0, 10, 0));
        box.getChildren().addAll(eingabe, feld, ok);
       
        BorderPane pane = new BorderPane();
        pane.setPadding(new Insets(10, 10, 10, 10));
        pane.setTop(box);
        pane.setCenter(area);
       
       
        ok.setOnAction(new EventHandler<ActionEvent>() {
           
            @Override
            public void handle(ActionEvent event) {
               
                String txt = feld.getText();
                txt = txt.toLowerCase();
               
                int [] array = new int [123];
                int index=0;
               
                for (int i=0; i<txt.length(); i++){
                   
                    index = (int) txt.charAt(i);
                    array[index]++;
                       
                    }//for
               
                for (int j=0; j<array.length; j++){
                   
                    char buchstabe = (char) j;
                   
                    if (array[j]>0){
                       
                        area.appendText(buchstabe + ": " + array[j] + " ");
                       
                        }//if
                    }//for
       
            }//ok_button
        });//setonaction
       
        primaryStage.setScene(new Scene(pane));
        primaryStage.show();
       
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Sieht etwas unordentlich aus aber naja ^^
 

Neue Themen


Oben