Why is the output 10 and not 9?. According to my understanding the count value is assign to b. Then the count value increment. Hence the output should be 9 instead of 10. However in this case the output is 10. Why?.

package com.nowhere.blogger.core.junit;

public class Bunnies {
	static int count = 0;
		while(count < 10) new Bunnies(++count); //prefix
	Bunnies(int x) {super();}
	public static void main(String[] args){
		new Bunnies();
		new Bunnies(count);
                  int b = count++; //postfix


Edited by solomon_13000: n/a

7 Years
Discussion Span
Last Post by AnkitKumar

When you start counting to 0 and make it go to 9, you get 10 values. (0,1,2,3,4,5,6,7,8 and 9)

If you want it to be 9, you should change your while-loop to

while(count < 9) new Bunnies(++count);

or keep the 10 in your loop and initialize count as 1 instead of 0.


you get value 10 since, as Thijk posted, the expression count < 10 will only return false when count = 10 (or count > 10).

the next increment is a postfix, so count will only be incremented after the value of b is set, so when you're printing your line:

count == 11
b == 10


when b becomes 9 it is checked in while loop likes while(9<10) then loop returns true because 9 is less than 10 after that b is incremented & it become 10 after that it will check condition in while loop like while(10<10) then it returns false or your program print b=10 & program get terminate.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.