web-dev-qa-db-fra.com

Création de plusieurs objets avec des noms différents dans une boucle à stocker dans une liste de tableaux

J'essaie de créer plusieurs objets d'un type de classe que j'ai créé. Je veux ensuite transférer ces valeurs dans la liste des tableaux. Comment puis-je créer des objets en utilisant une boucle while qui ont des noms différents. Par exemple, voici mon code maintenant, mais il ne ferait qu'un objet d'un seul nom.

Customer cust = new Customer("bob", 20.0);

et mon constructeur si vous voulez voir:

public Customer(String customerName, double amount)
{
    String name=customerName;
    double sale=amount;
}

classe StoreTest (avec la méthode principale):

import Java.util.ArrayList;
import Java.util.Scanner;

public class StoreTest {

ArrayList<Customer> store = new ArrayList<Customer>();

public static void main (String[] args)
{
        double sale=1.0; //so the loop goes the first time
        //switch to dowhile
        Scanner input = new Scanner(System.in);

        System.out.println("If at anytime you wish to exit" +
                ", please press 0 when asked to give " +
                "sale amount.");
        while(sale!=0)
        {
            System.out.println("Please enter the " +
                    "customer's name.");
            String theirName = input.nextLine();

            System.out.println("Please enter the " +
                    "the amount of the sale.");
            double theirSale = input.nextDouble();

            store.addSale(theirName, theirSale);
        }
        store.nameOfBestCustomer();
}

}

Classe de client:

public class Customer {

private String name;
private double sale;

public Customer()
{

}

public Customer(String customerName, double amount)
{
    name=customerName;
    sale=amount;
}
}

Store class (a des méthodes pour jouer avec arraylist:

import Java.util.ArrayList;


public class Store {

//creates Customer object and adds it to the array list
public void addSale(String customerName, double amount)
{
    this.add(new Customer(customerName, amount));
}

//displays name of the customer with the highest sale
public String nameOfBestCustomer()
{
    for(int i=0; i<this.size(); i++)
    {

    }
}
}
9
user1953907
ArrayList<Customer> custArr = new ArrayList<Customer>();
while(youWantToContinue) {
    //get a customerName
    //get an amount
    custArr.add(new Customer(customerName, amount);
}

Pour que cela fonctionne ... vous devrez réparer votre constructeur ...


En supposant que votre classe Customer possède des variables appelées name et sale, votre constructeur devrait ressembler à ceci:

public Customer(String customerName, double amount) {
    name = customerName;
    sale = amount;
}

Changez votre classe Store en quelque chose de plus comme ceci:

public class Store {

    private ArrayList<Customer> custArr;

    public new Store() {
        custArr = new ArrayList<Customer>();
    }

    public void addSale(String customerName, double amount) {
        custArr.add(new Customer(customerName, amount));
    }

    public Customer getSaleAtIndex(int index) {
        return custArr.get(index);
    }

    //or if you want the entire ArrayList:
    public ArrayList getCustArr() {
        return custArr;
    }
}
12
nhgrif

Vous pouvez utiliser ce code ...

public class Main {

    public static void main(String args[]) {
        String[] names = {"First", "Second", "Third"};//You Can Add More Names
        double[] amount = {20.0, 30.0, 40.0};//You Can Add More Amount
        List<Customer> customers = new ArrayList<Customer>();
        int i = 0;
        while (i < names.length) {
            customers.add(new Customer(names[i], amount[i]));
            i++;
        }
    }
}
4
programsji.com