2016-07-12 34 views
-1

Ich wurde gebeten, einen Kassierer, Testcashier zu erstellen und Daten Java-Klassen zu erhalten, um eine einfache Kassiereroperation nachzuahmen. Ich habe alle Klassen und alles erstellt, einschließlich der Erstellung und Anzeige von Änderungen, aber die Namen der Artikel und die Preise werden nicht angezeigt, warum?Ich erstelle eine Kassierer-Klasse, aber ich kann Name und Preis von jedem Artikel nicht erhalten

 public class Cashier { 
     private int numberOfItems; 
     private double totalSum; 
     private double amount; 
     private String names; 
     private String s, name; 
     private double price, tendered, change, dollars, quarters, dimes, 
     nickels, pennies; 

     NumberFormat nf = NumberFormat.getInstance(); 
     DecimalFormat df = (DecimalFormat)nf; 

     public Cashier(){ 
      this.name = ""; 
      this.price = price; 
      price = 0; 
      this.s = ""; 
     } 
     public Cashier(String name, double price, String s) 
     { 
      //this.tendered = 0; 
      this.name= name; 
      this.price = price; 
      //amount = tendered; 
      //price = 0; 
      //this.s = s; 

      } 


      public double average() 
      { 
       return totalSum/numberOfItems; 
      } 
      public void add(String name, double price) 
      { 
      totalSum = totalSum + price; 
      s = s + name + "........" + price + "\n"; 
      numberOfItems++; 
       } 

      public void makeChange() 
      { 

      change = amount - totalSum; 
      change = 100 * change; 
      change = Math.round(change); 
      change = change/100; 
      dollars = (int)(amount - totalSum) * 100/100; 
      pennies = (int)(change * 100) % 100; 
      quarters = (int)pennies/25; 
      pennies = (int)pennies % 25; 
      dimes = (int)pennies/10; 
      pennies = (int)pennies % 10; 
      nickels = (int)pennies/5; 
      pennies = (int)pennies % 5; 
      pennies = (int)pennies; 
       } 
      public String getNames() 
      { 
       return name; 
       } 
        public double getPrices() 
        { 
         return price; 
          } 
       public double getTotal() 
        { 
         return totalSum; 
           } 
          public double getMoney() 
           { 
          return tendered; 
          } 
          public double getChange() 
          { 
         return tendered - totalSum ; 
            } 
          public double getQuantity() 
           { 
       return numberOfItems; 
       } 
        public double getAverage() 
          { 
         return average(); 
          } 
       public double getDollars() 
        { 
        return dollars; 
          } 
         public double getQuarters() 
{ 
return quarters; 
} 
public double getDimes() 
{ 
return dimes; 
} 
public double getNickels() 
{ 
return nickels; 
} 
public double getPennies() 
{ 
return pennies; 
} 

public void tendered(double amount) 
{ 
// double tendered; 
    tendered = amount; 
} 

} 



public class TestCashier { 


public static void main(String[] args) { 

Cashier c = new Cashier(); 

String name = GetData.getWord("Enter name of item"); 
double price = GetData.getDouble("Enter price of item"); 
c.add(name, price); 

name = GetData.getWord("Enter name of item"); 
price = GetData.getDouble("Enter price of item"); 
c.add(name, price); 
name = GetData.getWord("Enter name of item"); 
price = GetData.getDouble("Enter price of item"); 
c.add(name, price); 

// Add a two more entries of your own 

// Now average the price of the items 
c.average(); 

// Make payment 
double amount = GetData.getDouble("Enter amount of money for payment"); 
c.tendered(amount); 
//ndered(amount); // Twenty dollars were tendered 

c.makeChange(); 

generateReceipt(c); 

} 
public static void generateReceipt(Cashier c) 
{ 

String s= "ABC Groceries Shop \n"; 

s = s + "Welcome – thanks for stopping, \n"; 

DateFormat df = DateFormat.getDateInstance(); 

Date d = new Date(); 

NumberFormat f = NumberFormat.getCurrencyInstance(); 

s = s + "Today is " + df.format(d) + "\n"; 

s = s + "Item:" +(c.getNames()); 
     //\n"; 


s = s + c.getNames() + "..... " + f.format(c.getPrices()) + "\n" + c.getNames() + 
     "..... " + f.format(c.getPrices()) + "\n" + c.getNames() + "....." + 
     f.format(c.getPrices()) + "\n"; 

s = s + "____________________" + "\n"; 

s = s + "Total " + f.format(c.getTotal()) + "\n\n"; 

s = s + "Amount tendered " + f.format(c.getMoney()) + "\n"; 

s = s + "The change is " + f.format(c.getChange()) + "\n"; 

s = s + "There were " + c.getQuantity() + " items" + "\n"; 
s = s + "The average price is " + f.format(c.getAverage()) + "\n\n"; 

s = s + "The change includes :" + "\n"; 

s = s + c.getDollars() + " dollars" + "\n" + c.getQuarters()+ " quarters" + 
     "\n" + c.getDimes()+ " dimes" + "\n" + c.getNickels()+ " nickels" + 
     "\n" + c.getPennies() + " cents"; 

JTextArea text = new JTextArea(s,15, 25); 

JScrollPane pane = new JScrollPane(text); 

JOptionPane.showMessageDialog(null,pane, "Your bill", 
     JOptionPane.INFORMATION_MESSAGE); 

} 


} 




public class GetData { 
    static String str; 
static double getDouble(String s) 
{ 
str = JOptionPane.showInputDialog(s); 
return Double.parseDouble(str); 
} 
static int getInt(String s) 
{ 
str = JOptionPane.showInputDialog(s); 
return Integer.parseInt(str); 
} 
static String getWord(String s) 
{ 
//str = JOptionPane.showInputDialog(s); 
return JOptionPane.showInputDialog(s); 
} 


} 

Antwort

1

Ihre public void add(String name, double price) Methode verkettet die Namen und Preise der s Mitglied der Cashier Klasse, aber Sie drucken die Ausgabe der getNames() und getPrices() Methoden, die Mitglieder zurück, die leer bleiben.

Eine Möglichkeit, die gewünschte Ausgabe zu erhalten, besteht darin, eine Methode aufzurufen, die s zurückgibt und sie druckt.

+0

Also sollte ich zurückkehren s statt Name oder Preis? Ich bin so verwirrt – hhhh

+0

@mariaandreaerramouspe Ersetze alle Aufrufe von 'getNames()' und 'getPrices()' mit einem einzigen Aufruf von 'getNamesAndPrices()', die s zurückgeben würde. – Eran

+0

kann es immer noch nicht funktionieren ugrrrrrrrrrrrrrr – hhhh

1

Sie benötigen Cashier mit dem contructor

public Cashier(String name, double price, String s) 

wie in

Cashier c = new Cashier (name, price, ""); 

nicht

c.add (name, price); 

instanziiert, die nicht das entsprechende Feld Werte nicht gesetzt