Я делаю программу для перебора массива объектов и вывода их на экран. Для этого я использую метод getName (). Когда я вызываю его из одного из моих классов, ничего не возвращается, но вызов из другого класса работает.
public class Customer {
String name;
public Customer(String name) {
this.name=name;
}
public String getName() {
return this.name;
}
}
Код выше - это метод getName (), который я хочу вызвать.
public class Store {
private String name;
private ArrayList<Customer> customersStore;
public Store(String name) {
this.name=name;
customersStore=new ArrayList<Customer>();
}
public void addCustomer(Customer customer) {
customersStore.add(customer);
for(int i = 0; i<customersStore.size();i++){
System.out.print(customersStore.get(i).getName() + " ");
}
}
public String getName() {
return this.name;
}
public ArrayList<Customer> getCustomers() {
return this.customersStore;
}
}
Поскольку программа не печатала ничего как способ отладки, я заставлял программу распечатывать массив при каждом вводе нового значения и обнаруживать, что он работает.
public class StoreView implements Observer{
public void printStoreDetails(Store store) {
ArrayList<Customer> customerList;
// Displaying the customer list
customerList = store.getCustomers();
// Displaying the values after iterating through the list
System.out.println("\nThe Customer names are:");
for(int i = 0; i<customerList.size();i++){
System.out.print(customerList.get(i).getName() + " ");
}
}
@Override
public void update(Observable o, Object name) {
printStoreDetails(new Store("Sears"));
}
}
Однако, когда Я пытаюсь вызвать его из класса StoreView выше, он ничего не печатает. Вот чего я не понимаю.
Ввод получен со сканера в основном классе
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Store myStore = new Store("Sears");
StoreView myStoreView = new StoreView();
StoreController myStoreController = new StoreController(myStore, myStoreView);
Customer aCustomer;
System.out.println("Enter customer names for store " + myStore.getName());
myStoreController.addObserver(myStoreView);
while(input.hasNext()) {
aCustomer = new Customer(input.nextLine());
myStoreController.addCustomer(aCustomer);
}
}
}
Затем вход отправляется в StoreController для добавления в ArrayList
public class StoreController extends Observable {
private Store model;
private StoreView view;
public StoreController(Store model, StoreView view){
this.model = model;
this.view = view;
}
public void addCustomer(Customer name){
model.addCustomer(name);
setChanged();
notifyObservers();
}
}
Я не очень знаком с наблюдателями, но общая цель программы - обновлять StoreView всякий раз, когда клиенты добавляются в Store через StoreController. Любая помощь приветствуется.