如果字符串包含较小的单词,如何将字符串中的单词拆分为两个标记

时间:2016-11-20 07:00:06

标签: java arrays if-statement token

我想计算次数""显示在我根据用户输入创建的标记数组中,并将其存储在名为" theCount"的变量中。我用for循环迭代数组并检查"""用if语句。

我不允许使用正则表达式。

这是我到目前为止所做的:

import java.util.*;

public class theCount
{
    public static void main (String[] args)
    {
        Scanner userInput = new Scanner(System.in);

        System.out.print("Enter a sentence: ");
        String sentence = userInput.nextLine();

        String[] input =  sentence.split(" the");

        int theCount = 0;

        for (String token : input) {
            if (token == "the")
                theCount++;
                System.out.print("\n" + theCount); //I want it printed after
                                                   //iteration. 

        }




    }


}

4 个答案:

答案 0 :(得分:1)

有几个问题:

  1. split(" the")使用" the"作为分隔符并提供其余字词。最好是使用空格分割。
  2. 使用token.equals("the")代替==

答案 1 :(得分:0)

如果要计算出现次数,请使用此示例代码:

import java.util.*;
public class theCount {
   public static void main(String[] args) {
       Scanner userInput = new Scanner(System.in);
       System.out.print("Enter a sentence: ");
       String sentence = userInput.nextLine();
       int theCount = sentence.length() - sentence.replace("the", "").length();
       System.out.print("Number of occurrence: " + theCount);
   }
}

答案 2 :(得分:0)

您可以将输入添加到arraylist,然后可以使用它。

一种方法是从频率方法中获取计数。

List<String> arrayList = new ArrayList<String>();
arrayList.add("String"); //add all the words.

Collections.frequency(arrayList, "the");

第二种方法是从地图中获取计数。

Map<String, Integer> map = new HashMap<String, Integer>();
for(String s : arrayList){
        Integer count = map.get(s);
        map.put(s, count==null?1:count+1);
} 
//the below will give you the count of any word.
map.get("the");

答案 3 :(得分:0)

从Java 8开始,你可以stream api来解决这个问题。这将更简洁。以下面的代码为例

public static void main(String[] args) {
    String str = "The is the for THE and the the the the The The";

    long count = Stream.of(str.split(" "))
            .filter(i -> i.equalsIgnoreCase("the"))
            .count();

    System.out.println(count);
}

===更新===

public static void main(String[] args) {

    String str = " there these theology";

    long count = Stream.of(str.split(" "))
            .map(String ::toLowerCase)
            .filter(i -> i.contains("the"))
            .count();

    System.out.println(count);
}

===更新===

即使字符串中有多个相同的子字符串,此解决方案也能正常工作。

public static void main(String[] args) {

    String str = " thesethefajfskfjthetheasdfjasdkfjthe";
    String findStr = "the";

    int count = 0;
    for (String s : str.split(" ")) {
        count += s.toLowerCase()
                .split(findStr, -1).length - 1 ;
    }

    System.out.println(count);

}

This SO帖子将帮助您了解如何在单个字符串中查找所有子字符串。