найдите количество вхождений каждого слова в предложении и распечатайте его, используя Карты - PullRequest
0 голосов
/ 28 августа 2018

Я изучаю Java, и я не понимаю, какую ошибку я делаю в коде, поскольку он не показывает количество вхождений

   package com.test.map;

    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;

    public class WordOcc {
       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, Integer>();
           String[] sa=sentence.split(" ");
           for(String word1:sa)
           {
               if(!wordOccMap.containsKey(word1))
                   wordOccMap.put(word1, 1);
               else
                   wordOccMap.put(word1, wordOccMap.get(word1)+1);
           }
       }
   }

1 Ответ

0 голосов
/ 28 августа 2018

Это просто, я переписал ваш код, так что немного легче обнаружить ошибку. Вопрос в том, какое слово этот код считает? Обратите внимание, что 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 ));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...