Java 计算句子的数量

Java 计算句子的数量,java,arrays,Java,Arrays,我有一个简单的循环来计算输入的句子。标点符号重复一次效果很好,但它们可以像“!!!”或“?”这样组合。所以,它像不同的句子一样计算它,如果它不是一个标记,我应该检查下一个字符。我没有任何想法,谢谢你抽出时间 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Please enter your sentence"); String line =br.readLi

我有一个简单的循环来计算输入的句子。标点符号重复一次效果很好,但它们可以像“!!!”或“?”这样组合。所以,它像不同的句子一样计算它,如果它不是一个标记,我应该检查下一个字符。我没有任何想法,谢谢你抽出时间

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter your sentence");
String line =br.readLine();
String delimiters = "?!.";
int count=0;

for(int i=0;i<line.length();i++) {

    if (delimiters.indexOf(line.charAt(i))!=-1) {
        count++;
    }
}
System.out.println("There are "+count+" sentences");
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
System.out.println(“请输入您的句子”);
String line=br.readLine();
字符串分隔符=“?!”;
整数计数=0;

对于(int i=0;i跳过重复字符,即仅检查该字符与前一个字符不同时是否为分隔符

String delimiters = "?!.";
int count = 0;
for (int i = 0; i < line.length(); i++) {
    if (i == 0 || line.charAt(i) != line.charAt(i - 1)) {
        if (delimiters.indexOf(line.charAt(i)) != -1) {
            count++;
        }
    }
}

这个正则表达式解决方案只对相邻的分隔符计数一次,即使它们不同,例如,如果
line=“这是一个文本。没有测试!!为什么?!?”
,那么下面给出的
count=3
是我能想到的最佳解决方案。这是基于下一句之前总是有空格的事实

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Please enter your sentence: ");
        String line = br.readLine();
        String delimiters = "?!.";
        int count = 0;

        for (int i = 0; i < line.length(); i++) {
            if (delimiters.indexOf(line.charAt(i)) != -1) {
                count++;
                // Skip all characters until a space is found
                while (i < line.length() && line.charAt(i) != ' ')
                    i++;
            }
        }
        System.out.println("There are " + count + " sentences");
    }
}

您已经介绍过正则表达式了吗?使用正则表达式可能更容易。如果您了解正则表达式,您可以使用
split
方法,以及匹配任意数量标点字符的表达式。如果您不了解正则表达式,您可以在
中添加一个循环,如果
语句前进到组中的最后一个标点字符。@ArvindKumarAvinash我知道,我在回答中已经说过。第一部分是简单地解决OP要求的问题。第二部分是显示可选的单行正则表达式解决方案,这也解决了混合分隔符问题。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Please enter your sentence: ");
        String line = br.readLine();
        String delimiters = "?!.";
        int count = 0;

        for (int i = 0; i < line.length(); i++) {
            if (delimiters.indexOf(line.charAt(i)) != -1) {
                count++;
                // Skip all characters until a space is found
                while (i < line.length() && line.charAt(i) != ' ')
                    i++;
            }
        }
        System.out.println("There are " + count + " sentences");
    }
}
Please enter your sentence: This is a text. No a test!! Why?!?!?
There are 3 sentences