Repository navigation
Expand file tree
/
Copy pathBasicDocument.java
More file actions
executable file
·94 lines (81 loc) · 2.89 KB
/
Copy pathBasicDocument.java
File metadata and controls
executable file
·94 lines (81 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package document;
import java.util.ArrayList;
/**
* A naive implementation of the Document abstract class.
* @author UC San Diego Intermediate Programming MOOC team
*/
public class BasicDocument extends Document
{
/** Create a new BasicDocument object
*
* @param text The full text of the Document.
*/
public BasicDocument(String text)
{
super(text);
}
/**
* Get the number of words in the document.
* "Words" are defined as contiguous strings of alphabetic characters
* i.e. any upper or lower case characters a-z or A-Z
*
* @return The number of words in the document.
*/
@Override
public int getNumWords()
{
return (getTokens("[a-zA-Z]+").size());
}
/**
* Get the number of sentences in the document.
* Sentences are defined as contiguous strings of characters ending in an
* end of sentence punctuation (. ! or ?) or the last contiguous set of
* characters in the document, even if they don't end with a punctuation mark.
*
* @return The number of sentences in the document.
*/
@Override
public int getNumSentences()
{
return (getTokens("[^.?!]+").size());
}
/**
* Get the number of syllables in the document.
* Words are defined as above. Syllables are defined as:
* a contiguous sequence of vowels, except for a lone "e" at the
* end of a word if the word has another set of contiguous vowels,
* makes up one syllable. y is considered a vowel.
* @return The number of syllables in the document.
*/
@Override
public int getNumSyllables()
{
ArrayList<String> words = (ArrayList<String>) getTokens("[a-zA-Z]+");
int count = 0;
for (String t: words) {
count += countSyllables(t);
}
return count;
}
/* The main method for testing this class.
* You are encouraged to add your own tests. */
public static void main(String[] args)
{
testCase(new BasicDocument("This is a test. How many??? "
+ "Senteeeeeeeeeences are here... there should be 5! Right?"),
16, 13, 5);
testCase(new BasicDocument(""), 0, 0, 0);
testCase(new BasicDocument("sentence, with, lots, of, commas.! "
+ "(And some poaren)). The output is: 7.5."), 15, 11, 4);
testCase(new BasicDocument("many??? Senteeeeeeeeeences are"), 6, 3, 2);
testCase(new BasicDocument("Here is a series of test sentences. Your program should "
+ "find 3 sentences, 33 words, and 49 syllables. Not every word will have "
+ "the correct amount of syllables (example, for example), "
+ "but most of them will."), 49, 33, 3);
testCase(new BasicDocument("Segue"), 2, 1, 1);
testCase(new BasicDocument("Sentence"), 2, 1, 1);
testCase(new BasicDocument("Sentences?!"), 3, 1, 1);
testCase(new BasicDocument("Lorem ipsum dolor sit amet, qui ex choro quodsi moderatius, nam dolores explicari forensibus ad."),
32, 15, 1);
}
}