#java
#java
Вопрос:
Я пытаюсь настроить код в методе richestCustomer() класса Store, чтобы использовать метод hasMoreMoneyThan(), но я продолжаю получать сообщение об ошибке «конструктор Customer в классе Customer не может быть применен к заданным типам»
Кто-нибудь знает, как это исправить?
КЛАСС CUSTOMER:
public class Customer {
private String name;
private int age;
private float money;
public Customer(String n, int a, float m) {
name = n;
age = a;
money = m;
}
public String toString() {
return "Customer " name ": a " age " year old with $" money;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public boolean hasMoreMoneyThan(Customer c){
if(this.money > c.money){
return true;
}else{
return false;
}
}
}
КЛАСС ХРАНЕНИЯ:
public class Store {
public static final int MAX_CUSTOMERS = 500;
String name;
Customer[] customers;
int customerCount;
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(){
int sum = 0;
for(int i = 0; i < customerCount; i ){
sum = customers[i].getAge();
}
int averageAge = sum/customerCount;
return averageAge;
}
public Customer richestCustomer(){
Customer richest = new Customer();
for(int i = 0; i < customerCount; i ){
if(customers[i].hasMoreMoneyThan(richest)){
richest = customers[i];
}
}
return richest;
}
Ответ №1:
Когда вы определяете пользовательский конструктор в классе, конструктор по умолчанию больше не включается по умолчанию в класс, вам нужно явно определить его. Либо определите конструктор по умолчанию в вашем классе Customer, либо используйте тот, который вы определили, передав значения по умолчанию.
Customer richest = new Customer(null, 0, 0f);
Лучшей реализацией вашего метода будет считать первого клиента самым богатым и сравнивать с остальными:
public Customer richestCustomer(){
if(customerCount <= 0) {
return null; // or throw exception
}
Customer richest = customers[0];
for(int i = 1; i < customerCount; i ){
if(customers[i].hasMoreMoneyThan(richest)){
richest = customers[i];
}
}
return richest;
}