Цель этого метода в том, что, когда я даю ему строку в качестве входных данных, он должен возвращать мне, какая буква встречается чаще всего.
Это работает правильно, если я введу строку в качестве ввода:
String text = "helllo";
так что это дает мне:
The most frequent letter is l with: 2 occurrences
и это правильно, но если я дам его в качестве ввода
String text = "abbccdd";
это дает мне
The most frequent letters are b,d with: 2 occurrences
и это не правильно, потому что это должно дать мне
The most frequent letters are b,c,d with: 2 occurences
пожалуйста, помогите!
BusinessLogic.java
package com.mycompany.showcharwithhighestoccurrence.javafxBusinessLogic;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class BusinessLogic {
public void hello() {
System.out.println("helllllo");
}
public String giveFinalResult(String text) {
String input = " ";
String output = " ";
if (text != null) {
input = text.toLowerCase().replaceAll("\\s+", "");
int[] freq = new int[input.length()];
int i, j, max, lastFreq;
lastFreq = 0;
//Converts given string into character array
char inputChars[] = input.toCharArray();
List<Character> maxChars = new ArrayList<>();
//Count each word in given string and store in array freq
for (i = 0; i < inputChars.length; i++) {
freq[i] = 1;
for (j = i + 1; j < inputChars.length; j++) {
if (inputChars[i] == inputChars[j] && inputChars[i] != ' ' && inputChars[i] != '0') {
freq[i]++;
inputChars[j] = '0';
}
}
}
//Determine maximum occurring characters
if (freq.length > 0) {
lastFreq = freq[0];
}
for (i = 0; i < freq.length; i++) {
max = freq[0];
if (freq[i] == lastFreq) {
max = lastFreq;
}
if (max == lastFreq && max < freq[i]) {
lastFreq = freq[i];
maxChars.add(inputChars[i]);
for (Character c : maxChars) {
if (c != null) {
output = "The most frequent letter is " + c + " with: " + freq[i] + "occurrences";
}
}
}
if (lastFreq < freq[i]) {
maxChars.clear();
maxChars.add(inputChars[i]);
for (Character c : maxChars) {
if (c != null) {
output = "The most frequent letter is " + c + " with: " + freq[i] + "occurrences";
}
}
}
if (max > 1 && max == freq[i]) {
maxChars.add(inputChars[i]);
output = "The most frequent letter are " + maxChars.get(0).toString() + ", "
+ iterator.next().toString() + " with: " + freq[i] + "occurrences";
}
}
}
}
return output;
}
}