Это просто, я переписал ваш код, так что немного легче обнаружить ошибку.
Вопрос в том, какое слово этот код считает? Обратите внимание, что word
никогда не используется ...
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc1=new Scanner(System.in);
Scanner sc2=new Scanner(System.in);
System.out.println("Enter the sentence");
String sentence=sc1.nextLine();
System.out.println("Enter the word");
String word=sc2.nextLine();
Map<String,Integer> wordOccMap=new HashMap<>();
String[] sa=sentence.split(" ");
for(String word1:sa)
{
if(!wordOccMap.containsKey(word1))
wordOccMap.put(word1, 1);
else
wordOccMap.put(word1, wordOccMap.get(word1) + 1);
}
}
}
Вторая проблема заключается в том, что вы не печатаете результаты обратно:
Это пример строки, которую вы можете использовать:
System.out.println( wordOccMap.getOrDefault( word, 0 ) );
Поскольку я не совсем уверен, какова ваша цель, я оставлю вас с этим примером, у которого было удалено слово variable (я не уверен, что вы пытались с ним сделать), и с инструкцией печати в другом синтаксис "for", чтобы вы могли видеть оба синтаксиса.
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main( String[] args ) {
Scanner sc1 = new Scanner( System.in );
System.out.println( "Enter the sentence" );
String sentence = sc1.nextLine( );
Map< String, Integer > wordOccMap = new HashMap<>( );
String[] sa = sentence.split( " " );
for ( String word1 : sa ) {
if ( !wordOccMap.containsKey( word1 ) ) wordOccMap.put( word1, 1 );
else wordOccMap.put( word1, wordOccMap.get( word1 ) + 1 );
}
wordOccMap.forEach( ( word, count ) -> System.out.println( word + " : " + count ));
}
}
Или представить вам статический импорт:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import static java.lang.System.out;
public class Test {
public static void main( String[] args ) {
Scanner sc1 = new Scanner( System.in );
out.println( "Enter the sentence" );
String sentence = sc1.nextLine( );
Map< String, Integer > wordOccMap = new HashMap<>( );
String[] sa = sentence.split( " " );
for ( String word1 : sa ) {
if ( !wordOccMap.containsKey( word1 ) ) wordOccMap.put( word1, 1 );
else wordOccMap.put( word1, wordOccMap.get( word1 ) + 1 );
}
wordOccMap.forEach( ( word, count ) -> out.println( word + " : " + count ));
}
}