Input/Output Objekte per Eingabe erzeugen

PascalC

Mitglied
Hallo,

Ich habe ein Programm geschrieben wo man per Nutzereingabe (Scanner) Objekte erzeugen kann.

Leider kann man immer nur ein Objekt einer Klasse erzeugen, wenn man ein Neues erzeugt wird das Alte mit den neuen Daten überschrieben.

Ich würde aber gerne mehrere Objekte derselben Klasse erzeugen und diese auch in eine Arraylist stellen. Oder wäre es besser ein festdefiniertes Array zu benutzen, also die Objekte vorher zu erstellen und dann vom Nutzer überschreiben zu lassen?

Kann man dies machen? Die einzige Idee, die ich zur Umsetzung habe, wäre eine Schleife, aber ich bin mir nicht sicher wie ich die implementieren kann. Hier mal noch das Interface (ohne die benutzten Klassen:

Java:
import java.util.Scanner;

public class Interface {

	Scanner scan = new Scanner (System.in);
	
	public void start()
	{
		Spieler typ = new Spieler(null, 0, null, 0);
		Sprit schnaps = new Sprit(null, 0.7, 1);
		Mischgetränke pussy = new Mischgetränke (null, 1);
		Mischung drink = new Mischung(null, 0.5, 1);
		Bar standart = new Bar();
		boolean forever = true;
		int wahl;
		double ml;
		
		int antwort;
		String [] auswahl = {"1 - Spieler erstellen", "2 - Getraenke einkaufen", "3 - Getraenke mischen", "4 - Trinken","5 - Bestand anzeigen", "0 - Nach Hause gehen :("};
		
		for (String index: auswahl)
			System.out.println(index);
		
		do
		{
		System.out.println("\n Was willst du tun?");
		antwort = scan.nextInt();
		
			switch(antwort)
			{
			case 1:
				{
					System.out.println("Wie heißt du?");
					typ.name = scan.next();
				
					System.out.println("Wie alt bist du?");
					typ.alter = scan.nextInt();
					assert typ.alter >= 18 : "Mach dich ab, du Milchbubi!";
				
					System.out.println("Wie ist dein Trinkverhalten?");
					typ.trinkverhalten = scan.next();
				
					System.out.println("Das bist du:");
					System.out.println(typ.toString());
					break;
					}
			case 2:
					{
					System.out.println("Willst du Schnaps(1) oder Mischgetränke(2) einkaufen?");
					wahl = scan.nextInt();
				
					switch (wahl)
					{
					case 1:
						{
							System.out.println("Welchen Schnaps willst du?");
							schnaps.name = scan.nextLine();
							schnaps.name = scan.nextLine();
					
							System.out.println("Wieviel Prozent hat dieses Teufelszeug?");
							schnaps.prozent = scan.nextDouble();
					
							standart.schnapsKaufen(schnaps);
							break;
						}
					
					case 2:
						{
							System.out.println("Welches Mischgetränk willst du?");
							pussy.name = scan.nextLine();
							pussy.name = scan.nextLine();
						
							standart.mischGetränkeKaufen(pussy);
							break;
						}
					
					default:
						System.out.println("Ungueltige Eingabe!");
						break;
					}
					break;
				}
			case 3:
					{
						System.out.println("Wieviel Schnaps willst du benutzen? (Vorsicht, es gibt nur 0,5er Glaeser!)");
						schnaps.menge = scan.nextDouble();
						schnaps.mischen(schnaps.menge, pussy);
						
						standart.hinzufuegen(drink);
						break;
					}
			case 4:
					{
						System.out.println("Was willst du trinken? 1 - Schnaps 2 - Alkoholfrei 3 - Mischung");
						wahl = scan.nextInt();
						
						switch(wahl)
						{
							case 1:
							{
								System.out.println("Welche Menge willst du vernichten?");
								ml = scan.nextDouble();
								schnaps.trinken(ml, typ);
								break;
							}
							case 2:
							{
								System.out.println("Wieviel willst du, Kleiner?");
								ml = scan.nextDouble();
								pussy.trinken(ml);
								break;
							}
							case 3:
							{
								System.out.println("Welche Menge willst du vernichten?");
								ml = scan.nextDouble();
								drink.trinken(ml, typ);
								break;
							}
							default:
								System.out.println("Ungueltige Eingabe!");
								break;
						}
						
					}
			case 5:
					{
					System.out.println(typ.toString());
					standart.bestand();
					break;
					}
			default :		
					{
					System.exit(0);
					}
		}
	}while (forever = true);
	}
}
 
Falls es jemand interessiert, ich konnte das Problem dadurch lösen die Objekte lokal in den "cases" anzulegen und mit add dem jeweiligen Array hinzuzufügen. Die anderen Methoden greifen jetzt dadurch auf das jeweilige Objekt zu, indem sie es mit einer containsabfrage aus dem Array auslesen.

Hier noch (grob) der geänderte Code:
Java:
 import java.util.ArrayList;
import java.util.Scanner;

public class Interface {

	Scanner scan = new Scanner (System.in);
	
	public void start()
	{
		ArrayList<Spieler> team = new ArrayList<Spieler>();
		ArrayList<Sprit> schnappes = new ArrayList<Sprit>();
		ArrayList<Mischgetränke> mischgetränke = new ArrayList<Mischgetränke>();
		ArrayList<Mischung> mischung = new ArrayList<Mischung>();
		Mischgetränke pussy = new Mischgetränke (null, 1);
		Mischung drink = new Mischung(null, 0.5, 1);
		Bar standart = new Bar();
		boolean forever = true;
		int wahl;
		double ml;
		String sagsmir;
		
		int antwort;
		String [] auswahl = {"1 - Spieler erstellen", "2 - Getraenke einkaufen", "3 - Getraenke mischen", "4 - Trinken","5 - Bestand anzeigen", "0 - Nach Hause gehen :("};
		
		for (String index: auswahl)
			System.out.println(index);
		
		do
		{
		System.out.println("\n Was willst du tun?");
		antwort = scan.nextInt();
		
			switch(antwort)
			{
			case 1:
				{
					Spieler typ = new Spieler(null, 0, null, 0);
					
					System.out.println("Wie heißt du?");
					typ.name = scan.next();
				
					System.out.println("Wie alt bist du?");
					typ.alter = scan.nextInt();
					assert typ.alter >= 18 : "Mach dich ab, du Milchbubi!";
				
					System.out.println("Wie ist dein Trinkverhalten?");
					typ.trinkverhalten = scan.next();
				
					System.out.println("Das bist du:");
					System.out.println(typ.toString());
					team.add(typ);
					break;
					}
			case 2:
					{
					System.out.println("Willst du Schnaps(1) oder Mischgetränke(2) einkaufen?");
					wahl = scan.nextInt();
				
					switch (wahl)
					{
					case 1:
						{
							Sprit schnaps = new Sprit(null, 0.7, 1);
							
							System.out.println("Welchen Schnaps willst du?");
							schnaps.name = scan.next();
					
							System.out.println("Wieviel Prozent hat dieses Teufelszeug?");
							schnaps.prozent = scan.nextDouble();
					
							standart.schnapsKaufen(schnaps);
							break;
						}
					
					case 2:
						{
							System.out.println("Welches Mischgetränk willst du?");
							pussy.name = scan.next();
						
							standart.mischGetränkeKaufen(pussy);
							break;
						}
					
					default:
						System.out.println("Ungueltige Eingabe!");
						break;
					}
					break;
				}
			case 3:
					{
						System.out.println("Welchen Schnaps willst du benutzen?");
						sagsmir = scan.next();
						standart.bestand();
						
						if (schnappes.contains(sagsmir))
						{
							int i = team.indexOf(sagsmir);
							System.out.println("Wieviel Schnaps willst du benutzen? (Vorsicht, es gibt nur 0,5er Glaeser!)");
							schnappes.get(i).menge = scan.nextDouble();
							schnappes.get(i).mischen(schnappes.get(i).menge, pussy);
							standart.hinzufuegen(drink);
						}
						
						else
						{
							System.out.println("Sorry, das haben wir nicht da");
						}
						break;
					}
			case 4:
					{
						System.out.println("Was willst du trinken? 1 - Schnaps 2 - Alkoholfrei 3 - Mischung");
						wahl = scan.nextInt();
						
						switch(wahl)
						{
							case 1:
							{
								System.out.println("Wer soll trinken?");
								System.out.println(team.toString());
								sagsmir = scan.next();
								
								if (team.contains(sagsmir))
								{
									int i = team.indexOf(sagsmir);
									
									System.out.println("Was soll getrunken werden?");
									sagsmir = scan.next();
									
									if (schnappes.contains(sagsmir))
									{
										int j = team.indexOf(sagsmir);
										System.out.println("Welche Menge willst du vernichten?");
										ml = scan.nextDouble();
										schnappes.get(j).trinken(ml, team.get(i));
										break;
									}
									
									else
									{
										System.out.println("Sorry, das haben wir nicht da");
									}
								}
								
								else
								{
									System.out.println("Diesen Spieler kenne ich nicht!");
								}
								break;
							}
							case 2:
							{
								System.out.println("Wer soll trinken?");
								team.toString();
								sagsmir = scan.next();
								
								if (team.contains(sagsmir))
								{
									System.out.println("Wieviel willst du, Kleiner?");
									ml = scan.nextDouble();
									pussy.trinken(ml);
								}
								
								else
								{
									System.out.println("Sowas haben wir hier nicht!");
								}
								break;
							}
							case 3:
							{
								System.out.println("Wer soll trinken?");
								team.toString();
								sagsmir = scan.next();
								
								if (team.contains(sagsmir))
								{
									int i = team.indexOf(sagsmir);
									
									System.out.println("Was soll getrunken werden?");
									sagsmir = scan.next();
									
									if (schnappes.contains(sagsmir))
									{
										int j = team.indexOf(sagsmir);
										System.out.println("Welche Menge willst du vernichten?");
										ml = scan.nextDouble();
										drink.trinken(ml, team.get(i));
										break;
									}
									
									else
									{
										System.out.println("Sorry, das haben wir nicht da");
									
									}
								}
								
								else
								{
									System.out.println("Diesen Spieler kenne ich nicht!");
								}
								break;
							}
							default:
								System.out.println("Ungueltige Eingabe!");
								break;
						}
						break;
					}
			case 5:
					{
					System.out.println(team.toString());
					standart.bestand();
					break;
					}
			default :		
					{
					System.exit(0);
					}
		}
	}while (forever = true);
	}
}
 

Neue Themen


Zurück
Oben