Da ich keine Vorkenntnisse habe und ich jetzt wirklich 1 Tag dran sitze, versuche ich mir Hilfe zu holen. Ich hab noch so ein bisschen das Problem mit der Syntax, mir fällt es schwer zu verstehen von wo, ich was nehmen kann usw.
Also folgendes Problem:
Ich soll das Minimum der Produkte ermitteln, die im Warenkorb sind.
Quellcode vom "Warenkorb":
Quellcode vom "Produkt":
Quellcode vom "Preis":
Ich soll also eine neue private Hilfsmethode erstellen, wo ich das billigste Produkt ermittle.
Es ist natürlich Hausaufgabe, aber ich komme bei diesem Schritt nicht weiter, und bräuchte einen Ansatz oder ähnliches. Würde mich echt freuen wenn ich so etwas bekommen könnte^^.
Also folgendes Problem:
Ich soll das Minimum der Produkte ermitteln, die im Warenkorb sind.
Quellcode vom "Warenkorb":
Java:
public class Basket {
private String username;
private Product[] products;
public Basket(String username) {
this.username = username;
this.products = new Product[0];
}
public void addProduct(Product product) {
Product[] newProdcuts = new Product[products.length + 1];
for (int i = 0; i < products.length; i++) {
newProdcuts[i] = products[i];
}
newProdcuts[newProdcuts.length - 1] = product;
products = newProdcuts;
}
public void print() {
System.out.format("Warenkorb für %s", username);
if (products.length == 0) {
System.out.println(" ist leer.");
return;
} else {
System.out.println(":");
}
Price sum = new Price(0);
Product product;
for (int i = 0; i < products.length; i++) {
product = products[i];
System.out.format("%s\t%s%n", product.getName(), product.getPrice().getFormatted());
sum = sum.add(product.getPrice());
}
System.out.format("Gesamtwert: %s%n", sum.getFormatted());
}
Quellcode vom "Produkt":
Java:
public class Product {
/**
* Die Bezeichnung dieses Produktes.
*/
private final String name;
/**
* Der Preis dieses Produktes.
*/
private final Price price;
/**
* Erzeugt ein neues Produkt mit dem gegebenen Namen und dem
* gegebenen Preis in Cent.
*
* Sollte der gegebene Name den Wert {@code null}
* haben oder leer sein, so wird der Name des erzeugten Produktes
* auf {@code unbekannt} gesetzt.
*
* Sollte der gegebene Preis kleiner als 10 sein, so wird der Preis
* des erzeugten Produktes auf 10 Cent gesetzt.
*
* @param pName Der Name für das zu erzeugende Produkt.
* @param pPrice Der Preis für das zu erzeugende Produkt in Cent.
*/
public Product(final String pName, final int pPrice) {
if (pName == null) {
name = "unbekannt";
} else if (pName.isEmpty()) {
name = "unbekannt";
} else {
name = pName;
}
if (pPrice > 10){
price = new Price(pPrice);
} else {
price = new Price(10);
}
}
/**
* Gibt den Namen dieses Produktes zurück.
*
* @return Den Namen dieses Produktes.
*/
public String getName() {
return name;
}
/**
* Gibt den Preis dieses Produktes zurück.
*
* @return Den Preis dieses Produktes.
*/
public Price getPrice() {
return price;
}
/**
* Gibt die Informationen zu diesem Produkt auf der Konsole aus.
* Dabei wird zunächst der Name und dann der Preis gefolgt von
* einer Zeilenschaltung ausgegeben. (Nocht nicht fertig).
*/
public void print() {
}
}
Quellcode vom "Preis":
Java:
public class Price {
private int cents;
/**
* Price Konstruktor.
*
* @param int cents Wert in Cent. Darf auch negative Werte annehmen.
*/
public Price(int cents) {
this.cents = cents;
}
/**
* Gibt den Wert dieses Preises in Euro auf der Konsole aus.
*
* Für einen Wert von 100 Cent gibt diese Funktion "1,0 Euro" aus.
*/
public void print() {
System.out.println(this.getFormatted());
}
/**
* Gibt einen String zurück, der den Preis in lesbarer Form
* wiederspiegelt.
*
* @return Den Preis in lesbarer Form.
*/
public String getFormatted() {
int euro = cents / 100;
int cent = Math.abs(cents % 100);
return String.format("%d,%d Euro", euro, cent);
}
/**
* Addiert den Wert des Price-Objekts mit dem Wert dieses
* Price-Objekts und gibt ein neues Price-Objekt mit der Summe
* zurück.
*
* @param Price price Das Price-Objekt, dessen Wert als Summand dient.
*
* @return Ein neues Price-Objekt, welches den Wert der Summe hat.
*/
public Price add(Price price) {
return new Price(price.cents + this.cents);
}
/**
* Addiert das Attribut "cents" mit dem Wert dieses Price-Objekts und
* gibt ein neues Price-Objekt mit dem Wert der Summe zurück.
*
* @param int cents Die Anzahl an Cents, die als Summand dienen.
*
* @return Ein neues Price-Objekt, welches den Wert der Summe hat.
*/
public Price add(int cents) {
return new Price(this.cents + cents);
}
/**
* Gibt den Wert dieses Price-Objektes in Cent zurück.
*
* @return Den Wert dieses Price-Objektes in Cent.
*/
public int getCent() {
return cents;
}
}
Es ist natürlich Hausaufgabe, aber ich komme bei diesem Schritt nicht weiter, und bräuchte einen Ansatz oder ähnliches. Würde mich echt freuen wenn ich so etwas bekommen könnte^^.