简体   繁体   中英

Instance Counter for a String - Java

String

  • name of the car. The name is formed by concatenating the word “Car” to the instance number of this object. For example, the first instance is Car1, the second instance is Car2, and so forth.

So I created a String named car and now I need to make it apply a incrementing number when a new instance is created.

public class CarDash {
public String Car ="Car"; 
public static int instanceNumber;
}

And then it needs to count how many instances were created

  • One class variable that is shared for all of the class instances. instanceNumber integer keeps track the number of instances created.

Should i add a counter whenever a certain method is called? Or have it count when the a new Car is named/created?

    instanceNumber++;

I dont know if I am making any sense...

Try like below.

public class CarDash {
public String Car ="Car"; 
public static int instanceNumber;

CarDash() {
    instanceNumber++;
    Car = Car + instanceNumber;
}

public static int getInstanceCount() {
   return instanceNumber;
}

}

You just need to create a constructor and increment the instanceNumber (using ++instanceNumber pre-increment ) then set the car value using instanceNumber variable.

So your constructor will be similar to below.

public CarDash(){
    Car="Car"+ (++instanceNumber);
}

Whole class will be as below

public class CarDash {
public String Car = "Car";
public static int instanceNumber;

public CarDash(){
    this.Car="Car"+ (++instanceNumber);
}

public static void main(String[] args) {
    CarDash car=new CarDash();
    CarDash car1=new CarDash();
    CarDash car2=new CarDash();

    System.out.println(car.Car+" "+car1.Car+" "+car2.Car);
}
}

Out put will be as below.

Car1 Car2 Car3

You can do instanceNumber++; in your constructor. But take special care in case you are instanceNumber as stati,as this would be shared by all instances. So,in your case(suppose you have 10 instances),you will get name as Car10 for all instances. eg

public class CarDash {
    public String Car ="Car";
    public static int instanceNumber;

public CarDash() {
    instanceNumber++;
}

public String print(){
    return  Car+instanceNumber;
}

public static void main(String[] args) {
    CarDash carDash=new CarDash();
    CarDash carDash1=new CarDash();
    CarDash carDash2=new CarDash();
    System.out.println(carDash.print());
    System.out.println(carDash1.print());
    System.out.println(carDash2.print());
}

}

Output :: Car3 Car3 Car3

Better way :

public class CarDash2 {
public String Car ="Car";
public static int instanceNumber;
public int carId;

public CarDash2() {
    instanceNumber++;
    carId=instanceNumber;
}

public String print(){
    return Car+carId;
}

public static void main(String[] args) {
    CarDash2 carDash=new CarDash2();
    CarDash2 carDash1=new CarDash2();
    CarDash2 carDash2=new CarDash2();
    System.out.println(carDash.print());
    System.out.println(carDash1.print());
    System.out.println(carDash2.print());
}

}

Output:: Car1 Car2 Car3

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM