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