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,045
  • 20
  • 83
  • 148

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
  • 195,986
  • 40
  • 382
  • 396
1

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

KV Prajapati
  • 92,042
  • 19
  • 143
  • 183
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
  • 118,129
  • 19
  • 204
  • 237
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
  • 429,241
  • 80
  • 483
  • 523