查找句子中每个单词的出现次数,然后使用地图将其打印出来

时间:2018-08-28 15:56:23

标签: java collections

我正在学习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 :(得分:0)

这是一个简单的代码,我重新编写了您的代码,因此更容易发现错误。 问题是:此代码算什么字?请注意,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 ) );

由于我不太确定您的目标是什么,因此我将在本示例中为您提供该示例,该示例已删除了单词变量(我不确定您要使用的变量是什么),并在另一个示例中使用了打印指令“ 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 ));
    }
}