Аз съм нов в Java и в момента пиша aпрограма, която използва въведени аргументи за разделители на текстов файл, съдържащ изречения, и след това определя броя на изреченията в този текстов файл въз основа на предоставените разделители.
Когато стартирам моя Main.java, искам потребителят да може да направи следното (където -d е флагът за разделител и символите след него са разделителите):
java Main -d !? или java Main -d.?
Или всяка друга комбинация. Моите въпроси са:
- Дали най-добрият начин да съхраните разделителите като низ или масив?
- Как мога да кажа на моята програма да използва разделителите, които се предават? Понастоящем програмата ми прави следното:
Проверява дали дадена дума завършва с някой от зададените разделители. Като:
if (word.endsWith(".") || word.endsWith("!") || word.endsWith("?")) {
sentenceCount++
}
Но вместо това бих искал да бъде нещо като:
if (word.endsWith(delimitersStringorArray.contains()) {
sentenceCount++
}
Надявам се, че това има смисъл и ако е необходимо, мога да дам допълнителни разяснения. Опитах се да търся, но не намерих специфичния си въпрос.
Благодаря!
Отговори:
4 за отговор № 1Вероятно най-добре е да имаме разделител a String
масив. Това е защото методът endsWith
използвай String
като параметър.
Проблемът е, че действителната версия на краищата с класа java.lang.String
не приема масив от възможни разделители, но е възможно да създадете персонализиран код, за да направите същото като следното:
public class StringUtility {
public static boolean endsWith(String str, String[] delimiters) {
for (String delimiter : delimiters) {
if (str.endsWith(delimiter)) {
return true;
}
}
return false;
}
}
И да го наречем използвайте код като следния
String[] delimiters = { ".", "!", "?" };
if (StringUtility.endsWith("yourWord", delimiters)) {
// Do something
}
Имайте предвид, че това е по-общ код, отколкото това, което сте заявили, защото можете да проверите дали предаденият низ завършва с разделители на повече от един символ.
3 за отговор № 2
Ако вашият разделител е само един символ, можете да съхраните разделителите в a List
, след това проверете дали последният знак на String
е в този списък:
List<Character> delimiters = new ArrayList<Character>();
delimiters.add(".");
delimiters.add("!");
delimiters.add("?");
if(delimiters.contains(word.charAt(word.length() - 1))){
sentenceCount++;
}