Задача :
В единственной строке записан текст.
Для каждого слова из данного текста подсчитайте, сколько раз оно встречалось
в этом тексте ранее.
Словом считается последовательность непробельных символов идущих подряд, слова
разделены одним или большим числом пробелов или символами конца строки.
Мой ход решения :
Считываем строку с клавиатуры, определяем сколько слов в строке, создаем массив типа String
. Длина массива равна количеству слов в строке. В индексы массива сохраняем каждое слово. После сравниваем между собой все элементы и ведем счётчик.
Мой код :
import java.util.Scanner;
public class Semnadcat1 {
public static void main(String[] args) {
System.out.println("Введите текст");
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int a = s.split(" ").length;
int i;
String[] b = new String[a];
for (i = 0; i < a; i++) {
for (String retval : s.split(" ")) {
b[i] = retval;
System.out.println(b[i]);
}
}
}
}
Ошибки:
Не удается поместить слова в элементы массива.
Метод split
возвращает массив String
(слов в данном случае), поэтому нет необходимости вручную добавлять слова в массив.
Для упрощения подсчета количества вхождений каждого слова можно хранить пары "слово - количество" в HashMap
.
public static void main(String[] args)
{
System.out.println("Введите текст");
Scanner in = new Scanner(System.in);
String string = in.nextLine();
String[] words = string.split("\\s+");
HashMap<String, Integer> wordToCount = new HashMap<>();
for (String word : words)
{
if (!wordToCount.containsKey(word))
{
wordToCount.put(word, 0);
}
wordToCount.put(word, wordToCount.get(word) + 1);
}
for (String word : wordToCount.keySet())
{
System.out.println(word + " " + wordToCount.get(word));
}
}
Также split
сделан по "одному или нескольким пробельным символам" с помощью регулярного выражения, что помогает избежать проблем с пустыми словами из-за идущих подряд пробелов.
Вариант со стримами:
String text = "text hello text";
String word = "text";
long count = Arrays
.stream(text.split("\\s+"))
.filter(word::equals)
.count();
На MainActivity есть кнопка при нажатии на которую происходит переход на другое Activity
Я использую для Spinner собственный адаптер, который должен изменять цвет первого пункта и в открытом состоянии, и в закрытомПроблема заключается...