Доступ к значениям классов изнутри другого класса и их изменение - PullRequest
0 голосов
/ 09 июля 2020

У меня проблема с моим public Customer rob методом. Мне нужен этот метод, чтобы иметь возможность захватить любого клиента c, установить его деньги на 0 и вернуть для этого всего клиента, то есть его имя, возраст и деньги. Вот код, любая помощь приветствуется.

Кроме того, краткое изложение кода - это просто магазин под названием walmart, который содержит 26 клиентов с их именем, возрастом (int) и деньгами (float)

Класс клиента:

class Customer {
    String name;
    int age;
    float money;

    public Customer(String n, int a, float m) {
        name = n;
        age = a;
        money = m;
    }

    public int getAge() {
        return age;
    }
    public float getMoney() {
        return money;
    }
    public String toString() {
        return "Customer " + name + ": a " + age + " year old with $" + money;
    }
}

Класс магазина, содержащий метод rob:

public class Store {
    public static final int MAX_CUSTOMERS = 500;
    String name;
    Customer[] customers;
    int customerCount;
    int main;
    public Store(String n) {
        name = n;
        customers = new Customer[MAX_CUSTOMERS];
        customerCount = 0;
    }
    public void addCustomer(Customer c) {
        if (customerCount < MAX_CUSTOMERS)
            customers[customerCount++] = c;
    }
    public void listCustomers() {
        for (int i=0; i<customerCount; i++)
            System.out.println(customers[i]);
    }

    public int averageCustomerAge() {
        //should return int of average age
        int i;
        for(i=0; i<customerCount;i++) {
            main += customers[i].getAge();
        }
        main = main/customerCount;
        return main;
    }
    public Customer richestCustomer() {
        int i;
        float total = 0;
        Customer mainCustomer = null;
        for(i=0; i<customerCount;i++) {
            if (customers[i].getMoney() > total) {
                mainCustomer = customers[i];
                total = customers[i].getMoney();
            }
        }
        return mainCustomer;
    }
    public Customer rob(Customer c) {
        Customer mainCustomer = null;
        mainCustomer = customers[c];

    }
}

Класс тестирования:

public class StoreTestProgram {
    public static void main(String args[]) {
        Customer[] result;
        Store walmart;
        walmart = new Store("Walmart off Innes");
        walmart.addCustomer(new Customer("Amie", 14, 100));
        walmart.addCustomer(new Customer("Brad", 15, 0));
        walmart.addCustomer(new Customer("Cory", 10, 100));
        walmart.addCustomer(new Customer("Dave", 5, 48));
        walmart.addCustomer(new Customer("Earl", 21, 500));
        walmart.addCustomer(new Customer("Flem", 18, 1));
        walmart.addCustomer(new Customer("Gary", 8, 20));
        walmart.addCustomer(new Customer("Hugh", 65, 30));
        walmart.addCustomer(new Customer("Iggy", 43, 74));
        walmart.addCustomer(new Customer("Joan", 55, 32));
        walmart.addCustomer(new Customer("Kyle", 16, 88));
        walmart.addCustomer(new Customer("Smaug", 12, 1000));
        walmart.addCustomer(new Customer("Mary", 17, 6));
        walmart.addCustomer(new Customer("Nick", 13, 2));
        walmart.addCustomer(new Customer("Omar", 18, 24));
        walmart.addCustomer(new Customer("Patt", 24, 45));
        walmart.addCustomer(new Customer("Quin", 42, 355));
        walmart.addCustomer(new Customer("Ruth", 45, 119));
        walmart.addCustomer(new Customer("Snow", 74, 20));
        walmart.addCustomer(new Customer("Tamy", 88, 25));
        walmart.addCustomer(new Customer("Ulsa", 2, 75));
        walmart.addCustomer(new Customer("Vern", 9, 90));
        walmart.addCustomer(new Customer("Will", 11, 220));
        walmart.addCustomer(new Customer("Xeon", 17, 453));
        walmart.addCustomer(new Customer("Ying", 19, 76));
        walmart.addCustomer(new Customer("Zack", 22, 35));
        //System.out.println("Here are the customers:\n");
        //walmart.listCustomers();

        System.out.println("\nAverage age of customers: " + walmart.averageCustomerAge());

        // Find richest customer
        System.out.println("\nRichest customer is: " + walmart.richestCustomer());

        //Make Smaug’s walmart experience quite miserable
        walmart.rob(walmart.customers[11]);
        System.out.println("\n Smaug is now: " + walmart.customers[11]);
    }
}

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете изменить rob, чтобы он принимал int index или String name клиента.

public Customer rob(int customerIndex) {
  Customer customer = customers[customerIndex];
  customer.setMoney(0f);
  return customer;
}

Поиск по имени мог бы выглядеть так:

Arrays.stream(customers)
    .filter(customer -> customer.name.equals(customerName))
    .findFirst();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...