我想在此代码中放置一个单词计数器,但不能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想在此代码中放置一个单词计数器,但不能相关的知识,希望对你有一定的参考价值。

我需要能够计算输入字符串中输入的单词数。我尝试了很多不同的东西,但没有一个对我有用

import java.util.Scanner;

public class Main
{
   public static void main(String args[])
   {
    Scanner in = new Scanner(System.in);
    System.out.println("Enter some text: ");
    String str = in.nextLine().toLowerCase();
    String vowels = "aeiou";
    System.out.println(str);

    int vcount = 0;
    int ccount = 0;

for (char c : str.toCharArray()) {

  if (Character.isLetter(c)) {

      if (vowels.indexOf(c) >= 0) 
      {
        vcount++;
      }
      else
      {
        ccount++;
        }
    }   
}

    System.out.print("your input has " + vcount + " vowels" + "\n");
    System.out.print("your input has " + ccount + " consonants" + "\n");
    //System.out.print("your input has " + words + " words");
   }
}

答案

将字符串拆分为空白,结果数组的长度就是您的字数:

int wordcount = str.split( "\\s+" ).length;

“ \\ s +”是与一个或多个空格字符匹配的正则表达式。

另一答案

正则表达式方法肯定是合理的。但是,如果您刚刚开始学习编程,那么下面的方法可能更适合。

让我们开始定义什么是“单词”。一个选项:“一个或多个连续字母的序列”。

因此,当遍历字符时,我们可能会遇到以下情况:

  • 我们已经在一个单词中,并且找到另一个字母->仍然在一个单词中
  • 我们已经在一个词中,除了字母以外的任何东西都被找到->再也没有一个词了
  • 我们一言不发,发现一个字母->我们找到了一个新词
  • 我们一言不发,发现除了字母以外的任何东西->仍然一言不发

因此,我们必须通过布尔变量来跟踪“我们在一个词中”。

翻译为代码:

int vcount = 0;
int ccount = 0;
int wcount = 0;
boolean inword = false;

for (char c : str.toCharArray()) 
{
    if (Character.isLetter(c)) 
    {
        if (vowels.indexOf(c) >= 0) 
        {
            vcount++;
        }
        else
        {
            ccount++;
        }
        if (!inword)
        {
            inword = true;
            wcount++;
        }
    }   
    else
    {
        inword = false;
    }
}

以上是关于我想在此代码中放置一个单词计数器,但不能的主要内容,如果未能解决你的问题,请参考以下文章

如何在导航栏中放置 UIImage 使其成为徽标?

有没有办法将2个非常相似的代码片段组合成一个函数并重复?

我想在一个html文件中放置多个网站

在每个路径中放置标签

片段内的Android TabHost

我想在我的一个目录中放置一个 403 禁止 [关闭]