1

私はプロジェクトを行っていますが、プログラムのこの部分が機能していません。入力された文字を要求し、指定されたテキスト ファイルを読み取り、テキスト ファイルに含まれるその文字のパーセンテージを出力します。コードは次のとおりです。

public static void inputLetterFrequency() {
    String letterInput = JOptionPane.showInputDialog("Please input a letter to find out the frequency");
    letterInput.toUpperCase();
    char c = letterInput.charAt(0);
    content = content.toUpperCase();

    for (int i = 0; i < content.length(); i++) {
        if (content.charAt(i) == c) {
            letterOccurence++;
        }
    }

    letterFrequency = (letterOccurence / numberCharacters) * 100.0;

    JOptionPane.showMessageDialog(null, "Frequency of letter " + c + " is " + letterFrequency + "%");
    String tryAgain = JOptionPane.showInputDialog("Please choose an option: \n1 to input another letter \n2 to exit ");
    int n = Integer.parseInt(tryAgain);
    if (n == 1) {
        CharacterAnalyzer.inputLetterFrequency();
    } else {
        System.exit(0);
    }

以下は、ファイルの先頭で宣言されています

public static int numberCharacters;
public static String Filename = UserPrompt.content;
public static int letterOccurence;
public static double letterFrequency;
public static int digitOccurence;
public static double digitFrequency;
4

1 に答える 1

6

これは計算するコードですletterFrequency: -

letterFrequency = (letterOccurence / numberCharacters) * 100.0;

上記のコードを次のように変更するだけです: -

letterFrequency = letterOccurence * 100.0 / numberCharacters;

最初のコード: -(letterOccurence / numberCharacters)が最初に評価され、これは であるため、integer division結果は になります。0numeratordenominator

にするには、分子をその前にfloating-point division掛けるだけです。100.0dividing

于 2012-11-27T23:18:08.450 に答える