2016-12-09 6 views
2

СтрокаInstance Счетчик для строки - Java

  • название автомобиля. Имя формируется путем объединения слова «автомобиль» к номеру экземпляра этого объекта. Например, первым экземпляром является Car1, второй экземпляр - Car2 и т. Д.

Итак, я создал строку с именем car, и теперь мне нужно заставить его увеличивать число при создании нового экземпляра.

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

И тогда нужно подсчитать, сколько экземпляров были созданы

  • одного переменного класса, который является общим для всех экземпляров класса. instanceNumber integer отслеживает количество созданных экземпляров.

Следует ли добавлять счетчик при вызове определенного метода? Или подсчитать, когда новый автомобиль назван/создан?

instanceNumber++; 

Я не знаю, если я никакого смысла ...

+0

вызов 'instanceNumber ++;' в вашем constrcutor –

+0

Требуется ли конструктору требование возврата? –

+0

* Требуется ли конструктору оператор return? * ** Нет, не должно быть достаточной логики в конструкторе, чтобы требовать какие-либо операторы возврата ** –

ответ

0

Вам просто нужно создать конструктор и увеличивает instanceNumber (используя ++instanceNumber Преинкремент) установите значение автомобиля с помощью переменной instanceNumber.

Таким образом, ваш конструктор будет похож на нижеследующий.

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

Весь класс будет ниже

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); 
} 
} 

вывод будет, как показано ниже.

Car1 Car2 Car3 
+0

Спасибо, это сработало отлично! –

+0

Пожалуйста, сделайте instanceNumber приватным! И «Автомобиль» должен быть постоянным: окончательным и прописным по соглашению –

0

Попробуйте, как показано ниже.

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

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

public static int getInstanceCount() { 
    return instanceNumber; 
} 

} 
0

Вы можете сделать instanceNumber ++; в вашем конструкторе. Но будьте особенно внимательны, если вы являетесь экземпляром Number как stati, так как это будет использоваться всеми экземплярами. Итак, в вашем случае (предположим, что у вас есть 10 экземпляров), вы получите имя Car10 для всех экземпляров. , например.

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()); 
} 

}

Выход :: Car3 Car3 Car3

Лучший способ:

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()); 
} 

}

Выход :: car1 Car2 Car3

+0

. Лучший способ выводит Car3 для всех экземпляров. –

+0

Вы издеваетесь @ B.Kel? Это не так, поскольку это примитивный int. –

+0

Я запустил его и получаю Car1 Car2 Car3. –