2017-11-16 10 views
0

이 온라인 상점 프로젝트가 있습니다. OnlineStore 클래스는 프로그램을 시작하는 main 메소드가있는 곳입니다. 또한 상속 된 클래스가있는 User, Item 및 Package라는 3 개의 클래스가 있습니다.다른 클래스의 기본 클래스에서 연결된 목록에 액세스하십시오. java

나는 모든 사용자, 항목 및 패키지를 링크 된 목록에 저장합니다. main 메서드 내에서 OnlineStore 클래스의 인스턴스를 만들었지 만 매 순간마다이 인스턴스에 액세스 할 수 있어야합니다. Item 클래스는이 연결된 목록에 액세스하여 판매 된 항목을 제거 할 수 있습니다.

public class OnlineStore{ 

    public static void main(String[] args) { 
    LinkedList<User> users = new LinkedList<User>(); 
    LinkedList<Item> itemsSold = new LinkedList<Item>(); 
    LinkedList<Item> items = new LinkedList<Item>(
    LinkedList<Package> packages = new LinkedList<Package>(); 
    } 
} 

//Then I create some instances of Items Users and call their methods of buying, 
//loging in, etc.. 

//If a item is buyed: 

public class Buyer extends User { 
    //ATTRIBUTES 
    private String accountNumber; 
    private LinkedList<Item> boughtItems; 

    //CONSTRUCTOR 
    public Buyer(String n, String id, String pass, String a){ 
     super(n, id, pass); 
     accountNumber = a; 
    } 

    //METHODS 
    public void buy(Item i){ 
     boughtItems.add(i); 
     //Here I need to acces the first class and remove from availableItems 
     items.remove(i); 
    } 



} 

도움 주셔서 감사합니다. 이 같은 존 R.

+0

당신은 실제로 질문을하지 않았습니다. 코드에 문제가있어 도움이 필요합니까? 그렇다면 질문을 [편집]하여 컴파일 또는 런타임 오류뿐 아니라 예상 결과와 실제 출력을 포함하십시오. [mcve]가 이상적입니다. – azurefrog

+0

도움을 주셔서 감사합니다, 내 질문을 업데이트 할 것입니다. 내 코드에서 볼 수 있듯이, 메인 메소드에는 4 개의 "maste"링크드리스트가 있습니다. 클래스 사용자가 다음과 같다고 상상해보십시오. public class User { private String name; 전용 문자열 식별자. 전용 문자열 암호; 공용 사용자 (문자열 n, 문자열 ID, 문자열 전달) { name = n; 식별자 = id; password = pass; } // 세터 및 getter } –

+0

도움 주셔서 감사합니다. 질문을 업데이트합니다. 구매자 클래스는 클래스 사용자를 확장합니다. "items.remove (i)"코드에서 해당 파트를 보면이 클래스 외부에서 선언 되었기 때문에 연결된 목록 항목에 액세스 할 수 없으므로 실제로 작동하지 않습니다. 당신은 어떻게해야합니까? –

답변

1

시도 뭔가 :

public class OnlineStore{ 

    public static LinkedList<User> users = new LinkedList<User>(); 
    public static LinkedList<Item> itemsSold = new LinkedList<Item>(); 
    public static LinkedList<Item> items = new LinkedList<Item>(); 
    public static LinkedList<Package> packages = new LinkedList<Package>(); 

    public static void main(String[] args) { 

    } 

은}

+0

나는 이것을 시도하고 컴파일한다. 하지만 이제는 구매자 b1 = 새로운 구매자 (여기서는 "매개 변수")와 항목 i1 = 새 항목 ("매개 변수는 여기에")을 작성한다고 상상해보십시오 그리고 b1.buy (i1) 메서드를 호출하십시오. public void buy i) { OnlineStore.items.remove (i); } 정적 목록에서 항목을 제거해야하므로, 이렇게하면 오류가 발생합니다. thread "Main"의 예외, onlinestore.Buyer.buy의 nullPointerException, ... onlinestore.main. 감사합니다. –

+0

목록에 항목을 추가 했습니까? 어쩌면 당신의 목록에 존재하지 않는 원소를 지우려고하기 때문에. 개인적으로 필자는 OnlineStore 클래스 내부에 main 메소드를 배치하지 않을 것을 고려할 것이지만 다른 메인 클래스에서는 고려하지 않을 것입니다. 이 경우 Online Store는 정상적인 클래스이고 모든 LinkedLists는 정적이어서는 안되며 메서드를 통해 액세스 할 수 있습니다. – Rafal