我怎样才能让程序打印一个句子中的单词数量?
我已经可以计算元音,辅音,空格和特殊字符。 我必须使用一些初学者技巧来做到这一点。 [编辑:鉴于最后的声明和下面的代码,这个问题听起来像帮助作业]没有太复杂。我怎样才能让程序打印一个句子中的单词数量?
import java.util.Scanner;
public class JBlahBlah
{
static Scanner sc = new Scanner(System.in );
public static void main(String[] Theory)
{
JWaffles MyWaffles = new JWaffles();
MyWaffles.ProgramHeading();
System.out.println("Enter a string:" );
String SentenceContents = sc.nextLine( );
int VowelCount = 0,ConsonantCount = 0,WordCount = 0,SpaceCount = 0,SpecialCharCount = 0 ;
for (int Bat = 0; Bat < SentenceContents.length(); Bat++)
{
char Vowels = SentenceContents.charAt(Bat );
if ( (Vowels == 'A') || (Vowels == 'a' )
|| (Vowels == 'E') || (Vowels == 'e' )
|| (Vowels == 'I') || (Vowels == 'i' )
|| (Vowels == 'O') || (Vowels == 'o' )
|| (Vowels == 'U') || (Vowels == 'u' ))
VowelCount++;
char Consonants = SentenceContents.charAt(Bat);
if ( (Consonants == 'B') || (Consonants == 'b')
|| (Consonants == 'C') || (Consonants == 'c')
|| (Consonants == 'D') || (Consonants == 'd')
|| (Consonants == 'F') || (Consonants == 'f')
|| (Consonants == 'G') || (Consonants == 'g')
|| (Consonants == 'H') || (Consonants == 'h')
|| (Consonants == 'J') || (Consonants == 'j')
|| (Consonants == 'K') || (Consonants == 'k')
|| (Consonants == 'L') || (Consonants == 'l')
|| (Consonants == 'M') || (Consonants == 'm')
|| (Consonants == 'N') || (Consonants == 'n')
|| (Consonants == 'P') || (Consonants == 'p')
|| (Consonants == 'Q') || (Consonants == 'q')
|| (Consonants == 'R') || (Consonants == 'r')
|| (Consonants == 'S') || (Consonants == 's')
|| (Consonants == 'T') || (Consonants == 't')
|| (Consonants == 'V') || (Consonants == 'v')
|| (Consonants == 'W') || (Consonants == 'w')
|| (Consonants == 'X') || (Consonants == 'x')
|| (Consonants == 'Y') || (Consonants == 'y')
|| (Consonants == 'Z') || (Consonants == 'z'))
ConsonantCount++;
char Spaces = SentenceContents.charAt(Bat);
if ((Spaces == ' '))
SpaceCount++;
char SpecialCharacters = SentenceContents.charAt(Bat);
if ( (SpecialCharacters == '!') || (SpecialCharacters == '@' )
|| (SpecialCharacters == '#') || (SpecialCharacters == '$' )
|| (SpecialCharacters == '%') || (SpecialCharacters == '^' )
|| (SpecialCharacters == '&') || (SpecialCharacters == '*' )
|| (SpecialCharacters == '(') || (SpecialCharacters == ')' )
|| (SpecialCharacters == '-') || (SpecialCharacters == '_' )
|| (SpecialCharacters == '+') || (SpecialCharacters == '=' )
|| (SpecialCharacters == ',') || (SpecialCharacters == '<' )
|| (SpecialCharacters == '.') || (SpecialCharacters == '>' )
|| (SpecialCharacters == '?') || (SpecialCharacters == '/' )
|| (SpecialCharacters == '"') || (SpecialCharacters == ';' )
|| (SpecialCharacters == ':') || (SpecialCharacters == '{' )
|| (SpecialCharacters == '[') || (SpecialCharacters == '}' )
|| (SpecialCharacters == ']') || (SpecialCharacters == '~' )
|| (SpecialCharacters == '`') || ((SpecialCharacters == '1' )
|| (SpecialCharacters == '2') || (SpecialCharacters == '3' )
|| (SpecialCharacters == '4') || (SpecialCharacters == '5' )
|| (SpecialCharacters == '6') || (SpecialCharacters == '7' )
|| (SpecialCharacters == '8') || (SpecialCharacters == '9' )
|| (SpecialCharacters == '|') ))
SpecialCharCount++;
}
System.out.println("There are " + VowelCount + " vowels in this sentance" );
System.out.println("There are " + ConsonantCount + " consonants in this sentance" );
System.out.println("There are " + SpaceCount + " spaces in this sentance" );
System.out.println("There are " + SpecialCharCount + " special characters in this sentance");
}
}
我怎样才能让程序打印字数呢?如果它们之间有几个空格呢?
下面介绍如何使用API来计算每种性格类型:
int spaceCount = sentence.length() - sentence.replaceAll(" ", "").length();
int vowelCount = sentence.length() - sentence.replaceAll("(?i)[aeiou]", "").length();
int consonantCount = sentence.length() - sentence.replaceAll("(?i)(?=[a-z])[^aeiou]", "").length();
int specialCount = sentence.length() - sentence.replaceAll("(?i)[^a-z ]", "").length();
int wordCount = sentence.trim().split("\\s+").length;
虽然你可能会认为这不是“教你如何编程”,它实际上是:学习语言的一部分是学习什么而不是通过让语言重为你解除。
如果你不熟悉正则表达式,你可能想参观这个site
使用的BreakIterator类从java.text.BreakIterator中包
使用的BreakIterator你可以找到号在句子中词汇的...
import java.text.BreakIterator;
BreakIterator boundary = BreakIterator.getWordInstance();
的BreakIterator能够做更多的.. 喜欢找到数字,行,句子等数量...
看到这个链接的进一步细节:
http://docs.oracle.com/javase/6/docs/api/java/text/BreakIterator.html
是我应该把这个在我的代码? – user1509462 2012-07-08 20:14:05
考虑它将一个方法,这将采取一个句子,并返回的话...... – 2012-07-09 02:54:27
,如果他们有什么好几个空格在单词之间?
使用此只有一个空格替换两个或多个空格,然后继续用你的算法
String stringOnlyOneSpace = stringTwoOrMoreSpaces.trim().replaceAll(" +", " ");
我已经做了那部分... – user1509462 2012-07-08 19:13:13
查看编辑答案 – Bohemian 2012-07-08 19:17:18