2017-11-20 37 views
-2

Ich versuche, das folgende Projekt zu lösen, wo ich die besten Kunden basierend auf ihren Einkäufen auswählen muss. Alle notwendigen Details wie Name und gekaufter Betrag sind in meinem POJO-Objekt (Customer) enthalten. Ich machte eine ArrayList von Cusomers und versuchte, getName()/getAmount-Methode in einer for-Schleife zuzugreifen.Zugriff auf ein Pojo-Objekt mit Arraylist

   import java.util.ArrayList; 
       import java.util.Scanner; 

    public class Store { 
    ArrayList<Customer> Customers = new ArrayList<>(); 
    Customer[] csa = new Customer[1000]; 

    public void addSale(String customerName, double amount) { 
    String cn = customerName; 
    double am = amount; 
    Customer cs = new Customer(cn, am); 
    Customers.add(cs); 
} 

public String nameOfBestCustomer() { 
    String name = null; 
    //Customer csa=new Customer(); 
    double largest = csa[0].getAmount(); 

    // gives me:java.lang.NullPointerException 

    for (int i = 1; i < Customers.size(); i++) { 

     if (largest < csa[i].getAmount()) { 
      largest = csa[i].getAmount(); 
      name = csa[i].getName(); 
     } 
    } 

    // return name+""+largest; 
    return name; 
} 


public static void main(String[] args) { 

    Store s = new Store(); 
    double am; 

    Scanner scanner = new Scanner(System.in); 

    while (true) { 

     System.out.println("Enter Customer name:"); 
     String cn = scanner.next(); 

     if (cn.equals("done")) { 
      am = 0; 
      scanner.close(); 

      break; 
     } else { 
      System.out.println("Enter Amount:"); 
      am = scanner.nextDouble(); 
      s.addSale(cn, am); 

     } 
    } 

    System.out.println("Best customer " + s.nameOfBestCustomer()); 

} 

      } 

Ist es in Ordnung, Customer [] csa = new Customer [1000] zu verwenden? wenn ich bereits einen Arraylist für Kunden habe?

Kann mir jemand sagen, wie man mit Array oder ArrayList auf Kundenmethoden zugreift? Und warum ist large = csa [0] .getAmount() eine NullPointerException?

+1

http://idownvotedbecau.se/itsnotworking/ –

+0

Ist das eine Hausaufgaben Frage? [Weil wir eine Etikette für diese haben] (https://meta.stackoverflow.com/questions/334822/how-do-iask-and-answer-homework-questions). – Haem

+0

no. Ich mache es für die Praxis – LearnerForever

Antwort

1

gibt es viele Fehler im Quellcode wie

  1. Kunden Klassenkonstruktors wurde falsch zugeordnet
  2. Sie keine Gegenstände auf Array gespeichert wurden so Objekte null sind.

Siehe unten Code i Quellcode aktualisiert haben, kopieren und einfügen nur wird es ... arbeiten

Paket Demo;

import java.util.ArrayList; 
import java.util.Scanner; 

public class Store { 
    ArrayList<Customer> Customers = new ArrayList<Customer>(); 
    Customer[] csa = new Customer[1000]; 

    public void addSale(String customerName, double amount) { 
    String cn = customerName; 
    double am = amount; 
    Customer cs = new Customer(cn, am); 
    Customers.add(cs); 
} 

public String nameOfBestCustomer() { 
    String name = null; 
    //Customer csa=new Customer(); 
    double largest = Customers.get(0).getAmount(); 

    // gives me:java.lang.NullPointerException 

    for (int i = 1; i < Customers.size(); i++) { 

     if (largest < Customers.get(i).getAmount()) { 
      largest = Customers.get(i).getAmount(); 
      name = Customers.get(i).getName(); 
     } 
    } 

    // return name+""+largest; 
    return name; 
} 


public static void main(String[] args) { 

    Store s = new Store(); 
    double am; 

    Scanner scanner = new Scanner(System.in); 

    while (true) { 

     System.out.println("Enter Customer name:"); 
     String cn = scanner.next(); 

     if (cn.equals("done")) { 
      am = 0; 
      scanner.close(); 

      break; 
     } else { 
      System.out.println("Enter Amount:"); 
      am = scanner.nextDouble(); 
      s.addSale(cn, am); 

     } 
    } 

    System.out.println("Best customer " + s.nameOfBestCustomer()); 

} 

      } 

class Customer { 
private String name; 
private double amount; 


public Customer(){ 

} 
//@SuppressWarnings("null") 
public Customer(String name,double price) { 
    this.name=name; 
    this.amount= price; 

} 





public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public double getAmount() { 
    return amount; 
} 
public void setAmount(double amount) { 
    this.amount = amount; 
} 

       } 




Output : 
Enter Customer name: 
ramesh 
Enter Amount: 
100 
Enter Customer name: 
pramod 
Enter Amount: 
200 
Enter Customer name: 
done 
Best customer pramod 
Verwandte Themen