Как вычислить частоту появления '+' и '++' в Java? - PullRequest
1 голос
/ 09 апреля 2020

Я хочу вычислить частоту появления всех операторов из входного текстового файла. Файл содержит операторы + и ++. Как я могу различить guish их соответствующую частоту, поскольку моя программа обрабатывает ++ как 2 различных оператора + вместо 1 ++?

Вот мой код (input7.txt файл теста):

public static void main(String[] args) throws IOException {

    String string = new String(Files.readAllBytes(Paths.get("input7.txt"))); //String to be counted 

    int frequencyArray[] = new int[string.length()]; 
    int frequencyArray2[] = new int[string.length()];

    char stringArray[] = string.toCharArray(); //Array of characters
    int i, j;

    //Count characters

    for (i = 0; i < string.length(); i++) {

        frequencyArray[i] = 1;
        //frequencyArray2[i] = 1;

        for(j = i + 1; j < string.length(); j++) 
        {
            if(stringArray[i] == stringArray[j]) 
            {

                frequencyArray[i]++;    
                stringArray[j] = '0'; //To avoid revisiting a character

            }   
        }   
    }


    //Display results

    System.out.println("Characters and their corresponding frequencies");

    for (i = 0; i < frequencyArray.length; i++) {

        if (stringArray[i] != ' ' && stringArray[i] != '0') {

            System.out.println(stringArray[i] +"-" + frequencyArray[i]); 

        }
    }
}

1 Ответ

0 голосов
/ 09 апреля 2020

Это работает для меня:

  String s = "sdfasd++ sdfadsf+asdf sdf++sadfasdf++sadfsdf+asdfasdf++";
            // create Set with all distinct characters 
Set<Character> chars = new HashSet<Character>();
            for (int i = 0; i < s.length(); i++) {
              chars.add(s.charAt(i));
            }
// count distinct characters and put Results in HashMap
            Map<Character, Integer> counts = new HashMap<Character, Integer>();
            for (Character c : chars) {
              int count = 0;
              for (int i = 0; i < s.length(); i++) {
                if (s.charAt(i) == c)
                  count++;
              }
              counts.put(c, count);
            }
// Count double-Character-Operators like this
            int countPlusPlus = 0;
            for (int i = 0; i < s.length() - 1; i++) {
              if (s.substring(i, i + 2).equals("++"))
                countPlusPlus++;
            }
        // Calculate totals like this
            int singleplusTotal = counts.get('+');
            System.out.println("Single Plus total" + singleplusTotal);
            System.out.println("Double Plus total" + countPlusPlus);
            System.out.println("Only single Plus" + (singleplusTotal - countPlusPlus * 2));
...