2016-04-10 10 views
0

Ich habe den Code vollständig überarbeitet und es ist fast abgeschlossen. Das letzte, was ich herausfinden möchte, ist, wie man die Anzahl der Großbuchstaben aus der Zeichenkette erhält, die der Benutzer in das Programm eingibt. Ich habe das Programm korrekt mit Scanner und System.out ohne JavaFx ausgeführt. Ich habe jedoch nicht herausgefunden, wie man den Code von einer Konsoleneingabe in eine Eingabe in einem Textfeld übersetzt. Hier ist mein neuer Code.JAVA FX - Erhalten der Anzahl der Großbuchstaben von Eingang

import java.util.Scanner; 

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.GridPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Pane; 
import javafx.scene.control.Button; 
import javafx.scene.control.ContentDisplay; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.stage.Stage; 

public class UppercaseLetters extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 
@Override 
public void start(Stage primaryStage) throws Exception { 

    // Create Pane 
    UpperCase pane = new UpperCase(); 

    primaryStage.setTitle("UpperCase"); 
    primaryStage.setScene(new Scene(pane)); 
    primaryStage.show(); 
    } 

private class UpperCase extends GridPane { 
    Label lblString = new Label("Enter String:"); 
    Label lblAmount = new Label("Number of capital Letters:"); 

    TextField tfString = new TextField(); 
    TextField tfAmount = new TextField(); 

    private UpperCase() { 
     setHgap(10); 
     setVgap(10); 
     setPadding(new Insets(10,10,10,10)); 

     add(lblString, 0, 0); 
     add(tfString, 1, 0); 
     add(lblAmount, 0, 1); 
     add(tfAmount, 1, 1); 

     tfString.setText("0"); 
     tfString.setAlignment(Pos.CENTER_RIGHT); 
     tfAmount.setText("0"); 
     tfAmount.setAlignment(Pos.CENTER_RIGHT); 

     Button submit = new Button("Submit"); 
     HBox hButtons = new HBox(submit); 
     submit.setOnAction(e->{ 

     }); 



    } 
} 


} 

Hier ist der Code für das Programm ohne JavaFx.

import java.util.Scanner; 

public class CapitalNumbers { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     System.out.print("Enter a string: "); 
     String s = input.nextLine(); 

     System.out.println("The number of uppercase letters = " + count(s.toCharArray())); 
    } 

    public static int count(char[] chars) { 

     return count(chars, chars.length - 1); 
    } 

    public static int count(char[] chars, int high) { 

     int count = Character.isUpperCase(chars[high]) ? 1 : 0; 
     if (high == 0) 
      return count; 
     else 
      return count + count(chars, high - 1); 

    } 
} 
+0

Ich glaube nicht, Ihre innere Klasse UpperPane sollte – BoDidely

Antwort

1

UpperPane fehlt den Konstruktor UpperPane(int value). Wenn Sie UpperPane aus Ihrer Startmethode extrahieren, zeigt Ihre IDE den entsprechenden Fehler an.

Jetzt müssen Sie Änderungen an Ihrem Textfield hören:

tfString.setOnAction(e -> { 
       int count = count(tfString.getText().toCharArray()); 
       tfAmount.setText(String.valueOf(count)); 
} 

//or 

tfString.textProperty().addListener((ov, oldText, newText) -> { 
       int count = count(newText.toCharArray()); 
       tfAmount.setText(String.valueOf(count)); 
}); 
+0

in Ihrem Start-Funktion definiert werden, habe ich völlig den Code zu einem Arbeitsprogramm nun bearbeitet, ohne das Durcheinander. Ich kämpfe jedoch immer noch mit setText und getText, um die Anzahl der Großbuchstaben in der Zeichenfolge zu zählen. – goblin

+0

Ich habe es so gemacht, aber ich muss noch den Submit-Button hinzufügen, um das zu machen. – goblin

Verwandte Themen