Konstruktor kopieren

forsti222

Mitglied
Bis jetzt habe ich schon den folgenden Code. Jetzt habe ich die Frage, wie kann ich den Konstruktor kopieren das schlussendlich als Ausgabe rauskommt:
001 .... Punsch is ready for drinking
002 .... Punsch is ready for drinking
eben so oft wie man Pünsche haben will?

Hoffe es ist verständlich was ich meine!

lg danke
Java:
class Punsch
{
	boolean sugar;
	int flavor;
	String temperature;
	public Punsch ()
	{
	}
	public Punsch (boolean newsugar,int newflavor,String newtemperature)
	{
		sugar = newsugar;
		flavor = newflavor;
		temperature = newtemperature;
	}
	
}
class Punschausgabe
{
	public static void main (String[] arg )
	{
		int flavor;
		boolean sugar;
		String temperature;
		//for(;;)
		//{
			
			System.out.println("Choose a flavor:");
			System.out.println("[0] alcohol free punch");
			System.out.println("[1] turbo punch(double Rum)");
			System.out.println("[2] blood orange punch");
			System.out.println("[3] apple punch with cinnamon");
			flavor = Input.readInt();
			System.out.print("With sugar (y/n)?");
			sugar = Input.readBoolean();
			System.out.print("Which temperature?");
			temperature = Input.readString();
			System.out.print("How many?");
			Punsch p = new Punsch(sugar,flavor,temperature);
			System.out.print(p.flavor+""+p.sugar+""+p.temperature);
		//}
	}
}
 
Zuletzt bearbeitet:
Ne net wirklich deutlich. Die Ausgaben steht ja noch nirgends. Falls sie in den Konstruktor soll, brauchst du ja nix kopieren? Sobald du ein neues Punsch-Objekt erstellst, wird auch die Ausgabe kommen.
 
In der Aufgabe heißt es ich soll: Die geforderte Anzahl von Pu?nschen sind als Kopien des Originalobjektes zu erzeugen (definieren Sie auch dafu?r einen passenden Konstruktor) und anschließend deren Merkmale auszugeben (Zugriffsmethode auf die jeweilige Kopie).
Und jetzt stellt sich eben die Frage für mich, wie sich das realisieren lässt. Vielleicht kennt sich nun jemand aus?

Danke

P.S danke für die Sig hab nun auf java code umgestellt !
 
Flüchtig drübergelesen und nicht lange drüber nachgedacht:

Du stehst an der Glühweinbude und sagst "Das gleiche noch mal" und hältst der Bedienung deinen Becher hin. Diese sieht, was genau du da in der Hand hast, und erzeugt eine "Kopie.

Etwas formaler: Du sollst einen Konstruktor schreiben, der als Argument einen Punsch übergeben bekommt und die Parameter wie sugar, temperature usw. daraus übernimmt.

Klar soweit? ;)
 
Mal schauen ob ich es richtig verstanden habe! Bitte um Korrektur, bin mir einfach nicht sicher ob ich damit die Aufgabe erfülle:
Im Anschluss an diese Eingaben wird ein solcher Punsch erzeugt (unter Verwendung eines entsprechenden Konstruktors!) und dem „Ka?ufer“ zur Verkostung angeboten. Danach ist noch zu erfragen, wie viele „Pu?nsche“ der spezifizierten Sorte insgesamt eingeschenkt werden sollen. Die geforderte Anzahl von Pu?nschen sind als Kopien des Originalobjektes zu erzeugen (definieren Sie auch dafu?r einen passenden Konstruktor) und anschließend deren Merkmale auszugeben (Zugriffsmethode auf die jeweilige Kopie).
Java:
import java.text.DecimalFormat;
class Punsch
{
	boolean sugar;
	int flavor;
	String flavor_desc[] = {"alcohol free punch","turbo punch (double Rum)", "blood orange punch","apple punch with cinnamon"}; 
	String temperature;
	String sugar_text;
	public Punsch ()
	{
	}
	public Punsch (boolean newsugar,int newflavor,String newtemperature,int newcount)
	{
		for(int i = 1; i <=newcount;i++)
		{
			Punsch l = new Punsch(newsugar,newflavor,newtemperature);
			DecimalFormat df = new DecimalFormat("000");
			if(sugar == true)
			{
				sugar_text = "with sugar";
			}
			else
			{
				sugar_text = "with sugar";
			}
			System.out.println(df.format(i)+" "+ l.temperature+" " +flavor_desc[l.flavor]+" "+sugar_text+" is ready for drinking.");
		}
	}
	public Punsch (boolean newsugar,int newflavor,String newtemperature)
	{
		sugar = newsugar;
		flavor =newflavor;
		temperature = newtemperature;
	}
	
}
class Punschausgabe
{
	public static void main (String[] arg )
	{
		int flavor;
		boolean sugar;
		char sugartemp;
		String temperature;
		int count;
		for(char produce='y';produce=='y';)
		{
			
			System.out.println("Choose a flavor:");
			System.out.println("[0] alcohol free punch");
			System.out.println("[1] turbo punch(double Rum)");
			System.out.println("[2] blood orange punch");
			System.out.println("[3] apple punch with cinnamon");
			flavor = Input.readInt();
			System.out.print("With sugar (y/n)?");
			sugartemp = Input.readChar();
			if(sugartemp=='y')
				sugar = true;
			else // nur bei eingabe von y wirklich yes
				sugar= false;
			System.out.print("Which temperature?");
			temperature = Input.readString();
			System.out.print("How many?");
			count = Input.readInt();
			Punsch p = new Punsch(sugar,flavor,temperature);
			Punsch s = new Punsch(p.sugar,p.flavor,p.temperature,count);
			//System.out.print(s.flavor);
			//System.out.print(p.flavor+""+p.sugar+""+p.temperature);
			System.out.print("Produce another sort?");
			produce = Input.readChar();
		}
	}
}
 
Hi,


001 .... Punsch is ready for drinking
002 .... Punsch is ready for drinking

um eine solche Ausgabe zu schreiben, könnte man auch eine "static" Variable schreiben und diese in den Konstruktor des Punches via System.out ausgeben.

Java:
static int countPunsch = 1;

    public Punsch (...)
    {
        sugar = newsugar;
        flavor =newflavor;
        temperature = newtemperature;
        System.out.println(countPunsch + " .... Punsch is ready for drinking");
        countPunsch++;
    }

Durch static Variablen können einzelne Werte Objekt-übergreifend, verwendet werden.

Aber meiner Meinung nach ist es unüblich , "System.out" Ausgaben in den Konstruktor zu schreiben.

Je nachdem, wie es die Aufgabe fordert.

mfg
bo
 
Zuletzt bearbeitet von einem Moderator:
Mal schauen ob ich es richtig verstanden habe!
Nein, du mußt einen weiteren Konstruktor (einen sogenannten Kopierkonstruktor) schreiben:
Java:
class Punsch {
  public Punsch(Punsch other) {
     // Werte von other nach this übernehmen
     ...
  }
}

...
Punsch p = new Punsch(sugar, flavor, temperature);
for (...) {
  Punsch kopie = new Punsch(p);
}
Gruß
 
Zurück