2013-03-17 4 views
-1

이것은 제 학교 과제입니다. 사용자가 신제품을 입력 할 때 제품 ID를 자동으로 업데이트하는 인벤토리 시스템이 필요합니다. 4 가지 속성 (이름, ID, 가격, 수량)을 가진 Product라는 객체 배열을 만들었습니다. ID는 사용자 입력이 필요하지 않아야합니다.자바의 자동 업데이트 ID

이 부분은 Object 클래스와 다른 input() 메서드에 있습니다. 다른 세 가지 특성과 마찬가지로 ID를 개체 클래스에 전달하지 않았습니다. 개체 클래스의

  x[i] = new Product(name,price,stock); 
      id = x[i].setID(); 

부분 :

/** 
* Constructor 
*/ 
public Product(){ 
    id = 0; name = ""; price = 0.00; quantity = 0; 
} 

public Product(String n, double p, int q){ 
    setName(n); setPrice(p); setQuantity(q); 
} 

public void setID(){ 
    this.id = id++; 
} 

감사합니다.

+0

ID를 자동 생성하는 방법을 찾으십니까? – sbrattla

+0

아이디어는 신제품이 추가 될 때마다 ID를 늘리므로 신제품을 입력 할 때마다 증가하는 COUNT를 작성하고 ID를 제품 클래스의 ID로 설정하면됩니다 – Azad

답변

0

각 Product 객체에 대해 고유 한 ID를 생성하는 방법을 찾고 있습니까? 그렇다면 지금 코드화 한 방식은 작동하지 않습니다. 각 제품에는 다른 모든 Product 객체와 완전히 독립적 인 고유 ID가 있기 때문입니다. 당신이 제품 객체를 생성 할 때마다 증가됩니다 코드에서 변수를 유지

  • 자바
  • 에 의미 정적 어떤 변수로

    1. 봐 - :이 접근 할 수있는 몇 가지 방법이 있습니다. 이 변수를 Product 생성자에 전달하십시오.
    1

    id이 인스턴스 변수이기 때문에 사용할 수 없습니다. 따라서 생성하는 모든 제품의 ID는 0이됩니다. 생성하는 모든 제품에 setID()을 호출하면 제품의 ID가 1로 설정됩니다.

    이 클래스에 속하는 static 카운터가 필요합니다. 하지의 인스턴스의 각이 다중 스레드 환경에서 잘 작동하지 않을 것, 그리고 그 두 배 가격에 대한 나쁜 선택이 될 것입니다,하지만 당신은 나중에 배울 것을

    public class Product { 
        private static int nextId = 0; 
    
        ... 
    
        public Product(String name, double price, int quantity) { 
         this.id = Product.nextId; 
         Product.nextId++; 
         this.name = name; 
         this.price = price; 
         this.quantity = quantity; 
        } 
    } 
    

    참고.

    인스턴스 및 정적 변수에 대한 자세한 내용은 the Java tutorial을 참조하십시오.