Рейтинг:
1
Richard MacCutchan
Использовать SortedMap (Java Platform SE 8 )[^] со словом, являющимся ключом, и счетом, являющимся значением. Если карта не содержит этого слова, добавьте его и установите его значение равным 1. Если карта действительно содержит ключ, то просто увеличьте его значение.
Member 13954890
публичный класс stringtowords
{ публичный статический хеш-таблицы в<строка, целое и GT; CountW(строка s,ss шнурует)
{
Hashtable<String,Integer> ht=новая хэш-таблица();
int count=1;
если(S.содержит(СС))
{
если(!ХТ.containsKey(СС))
{
ХТ.поставить(СС,прикинь);
}
еще
{ count=count+1;
}
}
возвращение ХТ;
}
public static void main(String args[])
{
Hashtable<String,Integer> hte=новая хэш-таблица();
Строка s="привет! мое имя@ это прагья";
Строку горе[]=С. сплит(" ");
для(строка w:wo)
{
Системы.из.код println(ж);
}
Строку слово;
for(int i=0;i<wo.length;i++)
{ word=wo[i].toLowerCase();
Список<символ&ГТ; ли=новый ArrayList и Л;характер&ГТ;();
ибо (char ch:слово.toCharArray())
если(ч&ГТ;='а' &&усилителя; ч&ЛТ;='з')
ли.добавить(ч);
Строка ss="";
для(char ch:li)
ss=ss+ch;
hte=CountW(s,ss);
Системы.из.код println(авш);
}
}
}
но для каждого слова он печатает только 1
Я не понимаю, куда я иду неправильно.
Richard MacCutchan
1. Вы используете хэш-таблицу, а не сортированную карту.
2. Вы разбиваете свои слова на символы по какой-то причине, не упомянутой в вашем вопросе.
Все, что вам нужно сделать с SortedMap, это сделать следующее:
- преобразуйте слово во все строчные буквы (если это необходимо).
- если lst уже содержит это слово, то добавьте 1 к значению.
- если в списке нет этого слова, то добавьте его как новую запись со счетом 1.
- повторите для всех слов.
Member 13954890
сэр, в чем разница между sortedmap и хэш-таблицей?
Member 13954890
публичный класс dhshk
{
публичный статический SortedMap в<строка, целое и GT; CountW(строка s,ss шнурует)
{
SortedMap в<строка,целое и GT; КЧ=новый древовидной диаграмме, в<строка,целое и GT;();
int count=1;
если(S.содержит(СС))
{
если(!ХТ.containsKey(СС))
{
ХТ.поставить(СС,прикинь);
}
еще
{ count=count+1;
}
}
возвращение ХТ;
}
public static void main(String args[])
{
SortedMap в<строка,целое и GT; авш=новые карты в<строка,целое и GT;();
Строка s="привет! мое имя@ это прагья";
Строку горе[]=С. сплит(" ");
для(строка w:wo)
{
Системы.из.код println(ж);
}
Строку слово;
for(int i=0;i<wo.length;i++)
{
word=wo[i].toLowerCase();
Список<символ&ГТ; ли=новый ArrayList и Л;характер&ГТ;();
ибо (char ch:слово.toCharArray())
если(ч&ГТ;='а' &&усилителя; ч&ЛТ;='з')
ли.добавить(ч);
Строка ss="";
для(char ch:li)
ss=ss+ch;
hte=CountW(s,ss);
Системы.из.код println(авш);
}
}
}
И все же я не получаю ответа.
Richard MacCutchan
Вы все еще разбиваете свои слова на списки символов, по какой-то неизвестной причине. Ваш метод CountW создает древовидную карту, опять же по какой-то неизвестной причине. Вы, кажется, создаете объекты ради их создания, а не по какой-либо полезной причине.
Member 13954890
Потому что я хочу, чтобы мои слова были без каких-либо специальных символов, таких как @ и no. Вот почему я разбиваю свои слова на символы, а затем удаляю из них все специальные символы и нет, а затем снова преобразую их в слова.