样本输出:



输入文章:我喜欢猫。
输入错误!您的论文必须至少包含2个句子
再试一次:

输入文章:我喜欢猫。我喜欢狗。

您的文章包含2个句子。



到目前为止,这是我的代码:

System.out.print("Enter the essay: ");

String essay = input.nextLine();

do {
    System.out.print("Incorrect input! Your essay must contain at least 2 sentences, please try again: ");
    essay = input.nextLine();
} while (!(essay.contains(".")));

if (essay.contains(".")) {
    System.out.println("Your essay contains x sentences.");
}


差距很多,我不知道该如何去做。你能帮忙吗?

最佳答案

您可以使用稍微复杂的正则表达式进行拆分,并取其长度:

Scanner input = new Scanner(System.in);

System.out.print("Enter the essay: ");

String essay = input.nextLine();
int sentenceCount = essay.split("\\S(\\s*[.!?])+(?!\\d)").length;

while (sentenceCount < 2) {
    System.out.print("Incorrect input! Your essay must contain at least 2 sentences, please try again: ");
    essay = input.nextLine();
    sentenceCount = essay.split("\\S(\\s*[.!?])+(?!\\d)").length;
}

System.out.printf("Your essay contains %d sentences.", sentenceCount);


Live demo on Ideone

请注意,这还会计算其他以句子结尾的字符,并拒绝显然不是2个句子的其他输入,例如:


...
我没有写一个!
WTF?!?!
Pi是3.14159。

09-08 12:11