簡體   English   中英

JAVA FX-從輸入中獲取大寫字母的數量

[英]JAVA FX - Getting number of capital letters from Input

我已經完全重做了代碼,並且幾乎完成了。 我要弄清楚的最后一件事是如何從用戶在程序中輸入的字符串中獲取大寫字母的數量。 我已經在沒有JavaFx的情況下使用Scanner和System.out正確運行了該程序。 但是,我還沒有弄清楚如何將代碼從控制台輸入轉換為文本字段中的輸入。 這是我的新代碼。

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->{

        });



    }
}


}

這是沒有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);

    }
}

UpperPane缺少構造函數UpperPane(int value) 當從啟動方法中提取UpperPane時,IDE將顯示相應的錯誤。

現在,您需要收聽對textField的更改:

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));
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM