2015-10-14 4 views
4

Я читаю текст и вычисляю, сколько раз это значение произошло в тексте. Для этого я использую ArrayList, когда добавляется более одного символа того же типа, который уже находится в моем ArrayList .... Я увеличиваю счетчик. Поэтому в конце метода я могу печатать буквы алфавита, содержащиеся в тексте, соответствующем соответствующему событию.Сравнение значений трудности с счетчиком

for(int i; i < text.length i++) 
    counter = 0 
    if arraylist already contains the character then continue 
    otherwise add the character to the array 
    for j; j < text.length j++ 
    if index of text(j) and text(i) == the same 
     counter++ 

     system out print arraylist[i] + counter 

Это псевдо-код, чтобы дать вам представление о том, как работает моя программа, я не хочу, чтобы отправить фактический код до, как это оценивается, и я сознательный о людях, использующих его.

Итак, я ищу способ определить, как найти самые высокие и самые низкие буквы, которые произошли. Я борюсь за идеи, если я не передаю как счетчик, так и индекс символа списка массивов в какую-то структуру данных, такую ​​как hashmap =/Я чувствую, что я действительно должен переусердствовать, хотя, если только я не структурировал свои программа не самая лучшая для того, что я пытаюсь сделать. Потому что, очевидно, я не могу сравнивать счетчики каждого цикла? .... вопрос о том, может ли быть hashmap лучше и стоит перезапустить все.

В любом случае, любые предложения приветствуются! (Это оценивается так, пожалуйста, не дает ответ, но больше возможности для того, как она могла бы подойти)

+1

Почему бы не использовать 'HashMap' для начала? Тогда вам не нужен вложенный цикл ... –

+2

Если я правильно понимаю, вы хотите распечатать, сколько раз каждый символ алфавита встречается в тексте? Если это так, вы должны использовать определенную функцию hashmap. Соедините каждого персонажа с его счетом. Если вы попытаетесь добавить символ на карту, и он уже существует, увеличьте его количество. В конце проведите через хэш-карту с петлей и запишите минимальные и максимальные значения. –

+0

Да, думаю, я очень плохо подошел к этому, возьму ваш совет @ EricGuan. Потому что мне скоро понадобится использовать min/max, чтобы найти сдвиг между наиболее распространенными и наименее распространенными алфавитными буквами (E и Z) – user2982832

ответ

5

Попробуйте использовать HashMap, т.е.

HashMap<Character, Integer> charMap; 

Если Integer является счетчиком вы бы как отслеживать. Заполните свой хэш-файл соответствующими символами. После этого вы можете просто получить символ методом get ("somechar") и увеличить целое число на 1. После того, как вы закончите итерацию через символы, вы можете выполнить итерацию через хэш-карту, чтобы определить символ с наименьшим/самым высоким частота.

Смежные вопросы