How do I count the number of words in a string?

后端 未结 8 1600
感情败类
感情败类 2021-01-13 02:54

I need to count the number of words and I am assuming the correct way to do it is by calculating the number of times that the previous character in a string is not a letter

相关标签:
8条回答
  • 2021-01-13 03:15

    Use just like this

    String s = "I am Juyel Rana, from Bangladesh";
    int count = s.split(" ").length;
    
    0 讨论(0)
  • 2021-01-13 03:16

    You can use String.split() to convert the string into an array, with one word in each element. The number of words is given by the length of the array:

    int words = myString.split("\s+").length;
    
    0 讨论(0)
  • 2021-01-13 03:16

    This problem is slightly more complicated than your algorithm allows.

    • What if there are two or more spaces in a row?
    • What if the string starts or ends with whitespace (or non-word characters)?

    This looks like homework, so I don't want to provide any code. I suggest an alternative approach which is simpler to think about.

    • Walk through the characters in the string, one by one.
    • Do something to remember if you are currently scanning a word or if you are not currently scanning a word.
    • Do something to determine when you enter or leave a word, and increment your counter accordingly.
    0 讨论(0)
  • 2021-01-13 03:22

    The following program will count the number of words in a sentence. In this program, we are counting alphabets just after space. The alphabet can be of lower case or upper case. We are inserting a space at the beginning since people don't start a sentence with space. We also need to take care that any special character or number should not be counted as a word.

    `import java.util.Scanner; public class WordSent {

    public static void main(String[] args) {
    
        Scanner in= new Scanner(System.in);
        System.out.println("Enter the sentence");
        String str=in.nextLine();
        String space=" ";
        String spaceword=space.concat(str);
    
        int count=0;
        for(int i=0; i<spaceword.length()-1;i++)
        {
            for (int k=0; k<=25; k++)
            {
            if(spaceword.charAt(i)==' '&& (spaceword.charAt(i+1)==((char)(65+k)) || spaceword.charAt(i+1)==((char)(97+k))))
            {
                count++;
            }
          }
         }
        System.out.println("Total number of words in a sentence are" +" :  "+   count);
         }
        }`
    
    0 讨论(0)
  • 2021-01-13 03:26

    Addressing the code directly, your first loop has i=0 as the first value of i, but then you ask for

    string.charAt(i-1) = string.charAt(-1),

    which is where your array-out-of-bounds is coming from.

    The second loop has another problem:

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

    You may also want to consider apostrophes as parts of words as well.

    0 讨论(0)
  • 2021-01-13 03:34

    The reason you are getting an IndexOutOfBoundsException is probably because when i is 0 your inner loop will have string.charAt(i-1) which will throw an exception since 0-1 is -1. If you fix that your method might work, although you can use more efficient techniques.

    0 讨论(0)
提交回复
热议问题