1

I need to count letters and spaces in some string. output is the string of mine

I tried this:

    for (int i = 0; i < output.length(); i++) {
        if (output.charAt(i) != ' ') {
            letters = letters++;
        } //counting spaces
        else {
            spaces = spaces++;
        }

It doesn't work. I get 0 letters and 0 spaces. I suppose I need some code instead ' ', right?

Jacek Kwiecień
  • 12,397
  • 20
  • 85
  • 157

4 Answers4

5
letters = letters++;

is wrong. (Same for spaces.) See here or here for an explanation: letters is unchanged after that line.

Either use:

letters = letters + 1;

or simply:

letters++;
Community
  • 1
  • 1
Mat
  • 202,337
  • 40
  • 393
  • 406
1

Use Character.isSpaceChar and Character.isLetter method. (documentation)

KV Prajapati
  • 93,659
  • 19
  • 148
  • 186
0

The java Character class has helper methods that you could use:

int letters = 0, spaces = 0;
for (int i = 0; i < output.length(); i++)
{
    char c = output.charAt(i);
    if (Character.isLetter(c))
    {
        letters++;
    }
    else if (Character.isWhitespace(c))
    {
        spaces++;
    }
}
trojanfoe
  • 120,358
  • 21
  • 212
  • 242
0
letters = letters++;

should be

letters++;

because letters = letters++;

is equivalent to,

int temp = letters;
letters++;
letters = temp;

which does not increment the value of letters

This classic Q/A of SO has more insights

Community
  • 1
  • 1
codaddict
  • 445,704
  • 82
  • 492
  • 529