2016-12-09 4 views
2
차의

문자열인스턴스 카운터 - 자바

  • 이름입니다. 이름은이 오브젝트의 인스턴스 번호에 "Car"라는 단어를 연결하여 구성됩니다. 예를 들어 첫 번째 인스턴스는 Car1이고 두 번째 인스턴스는 Car2입니다.

그래서 저는 car라는 문자열을 만들었습니다. 이제는 새 인스턴스를 만들 때 숫자가 증가하도록 적용해야합니다.

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

그리고는 다음의 클래스 인스턴스의 모든 공유

  • 하나 개의 클래스 변수를 생성 된 인스턴스 수 계산해야합니다. instanceNumber 정수 은 생성 된 인스턴스 수를 추적합니다.

특정 메소드가 호출 될 때마다 카운터를 추가해야합니까? 아니면 새 차를 만들거나 만들 때 계산 되나요? 나는 어떤 의미를 만드는 중이라서 만약 내가 잘 모릅니다

instanceNumber++; 

...

+0

constrcutor에서 'instanceNumber ++;'를 호출하십시오. –

+0

생성자에 return 문이 필요합니까? –

+0

* 생성자에서 return 문이 필요합니까? * ** 아니요. 반환 문이 필요하도록 생성자에 논리가 충분하지 않아야합니다. ** –

답변

0

당신은 다음 instanceNumber 변수를 사용하여 차 값을 설정 (++instanceNumber 선행 증가를 사용하여) 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); 
} 
} 

는 다음과 같이 될 것입니다 아래

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

전체 클래스가 될 것입니다.

Car1 Car2 Car3 
+0

감사합니다. 이것은 완벽하게 작동했습니다! –

+0

instanceNumber를 비공개로 설정하십시오. 그리고 "Car"는 상수 여야합니다 : 규범에 의한 최종 대문자 –

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 ++를 ​​수행 할 수 있습니다. 귀하의 생성자. 하지만 모든 인스턴스가 공유하기 때문에 instanceNumber가 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을 얻고있다. –