如何计算JAVA中'+'和'++'的出现频率?

问题描述 投票:0回答:1

我想从输入文本文件中计算所有运算符的出现频率。该文件包含运算符“ +”和“ ++”。当我的程序将'++'视为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]); 

        }
    }
}

}

java operators frequency
1个回答
0
投票

这对我有用:

String s = "sdfasd++ sdfadsf+asdf sdf++sadfasdf++sadfsdf+asdfasdf++";
        Set<Character> chars = new HashSet<Character>();
        for (int i = 0; i < s.length(); i++) {
          chars.add(s.charAt(i));
        }
        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);
        }
        int countPlusPlus = 0;
        for (int i = 0; i < s.length() - 1; i++) {
          if (s.substring(i, i + 2).equals("++"))
            countPlusPlus++;
        }

        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));
© www.soinside.com 2019 - 2024. All rights reserved.