0

I need to create a field to count the number of instances made by a class

public class Circle
{
private int diameter;
private int xPosition;
private int yPosition;
private String color;
private boolean isVisible;
private static int count = 0;

/**
 * Create a new circle at default position with default color.
 */
public Circle()
{
    diameter = 30;
    xPosition = 20;
    yPosition = 60;
    color = "blue";
    isVisible = false;
    count = count++;


}

public void returnCount(){
    System.out.println(count);
}

This is what Ive been playing with. I was hoping the count would increment by 1 each time a variable is created. However it just stays at 0.

Thanks for any help, Ciaran.

user202051
  • 173
  • 2
  • 5
  • 17

3 Answers3

2

Use just:

count++;

Why? because:

count = count ++;

is similar to doing something like this:

temp = count ;  // temp is 0.
count = count +1;  // increment count
count = temp;   // assign temp (which is 0) to count.

Take a look at a similar post-increament question.

Community
  • 1
  • 1
BobTheBuilder
  • 18,858
  • 6
  • 40
  • 61
2

The post increment operator implicitly uses a temp variable. so,

count = count ++;

is not equal to

count++;

in java.

Sven
  • 303
  • 2
  • 12
1

This is because of the invalid use of ++ operator.

Your code can be corrected simply by correcting the line as below.

// count = count++; incorrect
count++; // correct
// count = count + 1; // correct

When you use count++, the count variable is incremented by 1; but the value returned from the operator is the previous value of count variable.

You can learn this by trying the below.

public class Test {
    public static void main(String[] args) {
        int count = 0;
        System.out.println(count++); // line 1
        System.out.println(count++);
    }
}

When you run above below is the results.

0
1

That is "line 1" prints only 0 since the return value of count++ is always the previous value.

lkamal
  • 3,788
  • 1
  • 20
  • 34