簡體   English   中英

Java 程序打印出 0 而不是百分比

[英]Java program printing out 0 instead of a percentage

我正在做一個項目,但程序的這一部分不起作用。 它要求輸入一個字符,然后讀取給定的文本文件,並輸出文本文件中出現的該字母的百分比。 這是代碼:

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;

這是您計算letterFrequency的代碼:-

letterFrequency = (letterOccurence / numberCharacters) * 100.0;

只需將上面的代碼更改為:-

letterFrequency = letterOccurence * 100.0 / numberCharacters;

在第一個代碼中: - (letterOccurence / numberCharacters)將首先被評估,由於這是一個integer division ,如果numerator小於denominator ,其結果將為0

要使其成為floating-point division ,只需在dividing之前dividing分子乘以100.0

暫無
暫無

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

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