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);
}
}
Also sollte ich zurückkehren s statt Name oder Preis? Ich bin so verwirrt – hhhh
@mariaandreaerramouspe Ersetze alle Aufrufe von 'getNames()' und 'getPrices()' mit einem einzigen Aufruf von 'getNamesAndPrices()', die s zurückgeben würde. – Eran
kann es immer noch nicht funktionieren ugrrrrrrrrrrrrrr – hhhh