JAVA Arraylist Berechnen mit int und double und Abspeichern von Zwischenwerten?

Hallo Zusammen

Ich muss in einer Aufgabe int und Double Werte miteinander multiplizieren, siehe im Code bei TODO.

import java.util.ArrayList;

public class Einkauf {
	
	private ArrayList<Produkt> produkte = new ArrayList<Produkt>();

	public void addEinkauf(double preis, 
	                        int faktor, 
	                        int menge, 
	                        String name) {
		produkte.add(new Produkt(preis, faktor, menge, name));
	}
	
	public double getPunkte() {
		
// TODO: Punkte des Einkaufs berechnen und zurückgeben
    double punkte;  // sollte richtig sein 
    for (Produkt p : produkte){
        punkte = (preis*menge*faktor); // hier ist ein Fehler 
        produkte.save(punkte);
        return punkte;
    }
	}
}

Es sollen die Treuepunkte wie folgt berechnet werden: Pro CHF Umsatz gibt es einen Punkt. Rappenbeträge werden berücksichtigt: Kostet ein Produkt CHF 3.20, ergibt dies 3.2 Punkte. Zusätzlich kann bei jedem Produkt ein Faktor angegeben werden. Damit kann der Grossverteiler für bestimmte Produkte mehr Punkte ausschütten. Wenn beispielsweise ein Produkt für CHF 3.20 einen Faktor von 10 hat, gibt es für dieses Produkt 32 Punkte.

Für den oben gezeigten Einkauf beträgt das Punkte-Total 207.15.

Sprich, bei jedem Einkauf soll der zwischenwert gespeichert werden.

programmieren, Java, Array, Programmiersprache, Arraylist
JAVA Klassenmethoden- Methoden aufrufen und neue Werte abspeichern. Aber wie?
Hallo Zusammen

Ich brauche bei dem untersten Code Hilfe, weiss leider nicht wo mein Fehler ist..

Aufgabenstellung

Du implementierst eine Plattform, in der Artikel versteigert werden können. Zum Speichern eines Artikels verwendest du die folgende Klasse:

public class Artikel {
   public String name;
   public int preis = 0;
   public int gebote = 0;

   public Artikel(String name, int preis) {
      this.name = name;
      this.preis = preis;
   }
}

Das Attribut name enthält die Beschreibung des Artikels. Das Attribut preis enthält zu Beginn das Mindestgebot und später das bisher höchste Gebot. Die Attribute name und preis werden beide über den Konstruktor gesetzt. Im Attribut gebote wird die Anzahl gültiger Gebote gespeichert. Zu Beginn enthält das Attribut den Wert 0. Ein Gebot ist gültig, wenn eine der folgenden Bedingungen erfüllt ist:

  • Wenn noch kein Gebot abgegeben wurde und der gebotene Betrag mindestens gleich hoch ist wie das Mindestgebot.

Wenn das Gebot höher ist als das bisher höchste Gebot.

Ergänze die Methode so dass sie prüft, ob das übergebene Gebot gültig ist. Bei einem ungültigen Gebot soll nichts gemacht werden. Bei einem gültigen Gebot soll der Preis des Artikels angepasst und die Anzahl gültiger Gebote um eins erhöht werden.

Die Main-Klasse enthält Tests für drei Artikel. Schau dir die Tests an. Wenn du die Methode wie beschrieben erweitert hast, sollte das Programm die folgende Ausgabe machen:

Schrank: Gebote: 0, Preis: 100
Bett: Gebote: 2, Preis: 161
Stuhl: Gebote: 3, Preis: 30

Mein Code sieht folgendermassen aus:
Main Class: 
public class Main {
	
  public static void main(String[] args) {
    
		// In dieser Klasse keine Änderungen machen
		
		Artikel a = new Artikel("Schrank", 100);
		Artikel b = new Artikel("Bett",150);
		Artikel c = new Artikel("Stuhl", 20);
		
		a.biete(99);  // ungültig (Preis unter Minimum)
		b.biete(160);
		b.biete(159); // ungültig (Preis unter höchstem Gebot)
		b.biete(161); 
		c.biete(20);
		c.biete(23);
		c.biete(23);  // ungültig (Preis gleich hoch wie höchstes Gebot)
		c.biete(30);
		
		System.out.println(a.name+": Gebote: "+a.gebote+", Preis: "+a.preis);
		System.out.println(b.name+": Gebote: "+b.gebote+", Preis: "+b.preis);
		System.out.println(c.name+": Gebote: "+c.gebote+", Preis: "+c.preis);
	}
}
Klasse Artikel: 
public class Artikel {
	public String name; //Beschreibung des Artikels 
	public int preis = 0; // enthält erst das Mindestangebot und später das Höchstgebot 
	public int gebote = 0; 
	
	public Artikel(String name, int preis) {
		this.name = name;
		this.preis = preis;
	} 
	
	public void biete(int gebot) {
	  // TODO: Methode implementieren
	  while ((gebote==0 && gebot>preis) || (gebote>0 && gebot>preis)){
	  if ((gebote==0) && (gebot>=preis)) {
            artikel.preis==gebot;
            gebote++;
	      }
	  
	  if (gebote>0 && (preis>gebot){
	      preis==gebot; 
	      gebote++;
    }
    } 
    }
	}

Java, Programmiersprache
Java: Wie kann ich eine Route mit beliebig vielen Zwischenhalten einlesen und im Array ausgeben?

Hallo zusammen.

Es soll ein Programmcode geschrieben werden, bei dem ein Anzahl Zwischenstopps, Start- und Endpunkt angegeben werden müssen. Alle Eingaben müssen im Array gespeichert und später wiedergegeben werden.

Wichtig ist:

  • Erster Wert ist mein Startpunkt, bspw. Köln.
  • Der letzte Arraywert ist mein Endpunkt, bspw. Berlin.

Irgendwas in meinem Code ist leider falsch. Es müssen definitiv zwei Schleifen vorhanden sein.

Könnt ihr mir bei der Korrektur meines Codes bitte helfen?

Besten Dank!

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // Diesen Teil nicht anpassen
    Scanner keyScan = new Scanner(System.in);
    System.out.print("Anzahl Zwischenhalte: ");
    int anzahlVias = keyScan.nextInt();
    keyScan.nextLine();
    String [] strecke = new String[anzahlVias + 2];

    System.out.print("Reise von: ");
    // TODO: Start einlesen und im Array strecke speichern
    strecke[0] = keyScan.nextLine();

    System.out.print("Reise nach: ");
    // TODO: Ziel einlesen und im Array strecke speichern
    strecke[strecke.length - 1] = keyScan.nextLine();

    // TODO: Vias einlesen und im Array strecke speichern
    int counter = 0;

    while (counter < strecke.length) {
      for (int i = 0; i < strecke.length; i++) {
        for (int y = 0; y < 3; y++) {
          System.out.print("Via: ");
          strecke[1] = keyScan.nextLine();
          counter++;
        }

        System.out.println("Deine Route: "+ strecke[counter]);
      }

      // TODO: Route ausgeben
    }

    keyScan.close();
  }
}
Java, Array, Programmiersprache
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.