Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 16:15

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Java] Array - Klassenmember(?)

Discussion on [Java] Array - Klassenmember(?) within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
The_Dentist's Avatar
 
elite*gold: 13
Join Date: Nov 2014
Posts: 71
Received Thanks: 4
[Java] Array - Klassenmember(?)

Hey,

Ich habe folgendes Problem und zwar soll ich zwei Klassen schreiben.

Einmal eine "Singer" und einmal eine "Coach" Klasse. Beide Klassen haben ihre Attribute und Methoden.

Nun soll ich der Coach Klasse eine Methode hinzufügen, mit der es möglich ist, Sänger (also Objekte von Singer) einem Array vom Typ Singer (Singer[] s = new Singer[x - Länge]) hinzuzufügen, sodass man das Array durchgehen kann und alle Sänger findet, welche dem gleichen Coach zugeordnet sind.

Dieses Array soll sich in der Coach Klasse befinden.

Mein Ansatz sieht derzeit, wie folgt aus:


Ich wusste nicht genau, wie man diese Beziehungen nennt.

Kann mir Jemand bei dem Problem helfen?

Wäre demjenigen sehr dankbar!

LG
The_Dentist!

€DIT: Hat sich erledigt, Lösung des Problemes wurde gefunden!
The_Dentist is offline  
Old 12/28/2014, 18:29   #2
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,406
Received Thanks: 2,024
Wieso heißt deine Methode select? Wäre ein Name wie insert nicht passender?

Angenommen du hast deine Klasse Coach:

Code:
class Coach {
	private Singer[] singer = new Singer[20];

	public void insert(Singer s) {
		int pos = getEmptyPos();

		if(pos != -1) {
			singer[pos] = s;
		}
	}

	private int getEmptyPos() {
		for (int i = 0; i < singer.length; i++) {
			if(singer[i] == null) {
				return i;
			}
		}

		return -1; // array voll
	}
}
So in etwa könnte das Einfügen aussehen. Ist allerdings ungetestet.

Dann könntest du sowas wie folgt machen:

Code:
Coach c = new Coach();

c.insert(new Singer());
Und dann für die Ausgabe eben das Array durchgehen.

Schöner wäre es natürlich mit einer Arraylist, aber ich nehme an, ihr müsst Arrays verwenden.
NotEnoughForYou is offline  
Thanks
1 User
Old 12/28/2014, 18:32   #3
 
The_Dentist's Avatar
 
elite*gold: 13
Join Date: Nov 2014
Posts: 71
Received Thanks: 4
Quote:
Originally Posted by NotEnoughForYou View Post
Wieso heißt deine Methode select? Wäre ein Name wie insert nicht passender?
Aufgabenstellung...
Danke schon mal, ich versuche es gerade mal!


€dit:


So:

LG
The_Dentist is offline  
Old 12/28/2014, 19:24   #4
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,406
Received Thanks: 2,024
Zeig mal deinen ganzen Code.

Überschreiben doch lieber die toString Methode und gebe es über ein System.out.print aus, ist eleganter
NotEnoughForYou is offline  
Old 12/28/2014, 19:44   #5
 
The_Dentist's Avatar
 
elite*gold: 13
Join Date: Nov 2014
Posts: 71
Received Thanks: 4
[Coach - Klasse]

[Singer - Klasse]


€dit: Leider immer noch keine Lösung.
The_Dentist is offline  
Old 12/29/2014, 20:59   #6
 
RecK's Avatar
 
elite*gold: 20
Join Date: Jan 2009
Posts: 304
Received Thanks: 55
Ein normales Objektarray zu verwenden, wenn dynamisch viele Objekte hinzugefügt werden können ist unsinnig. Die Länge muss vorher festgelegt werden.
Jeder der dann einem mit ReDim-Funktionen kommt, "scheißt" ja ganz schön auf Performance...

0815-Lösung fürs Listing wäre:
Code:
private ArrayList<Singer> customers = new ArrayList<>();

public List<Singer> getAllSingers() {
    return customers;
}

public void addSinger(Singer s) {
   customers.add(s);
}
Was bereits angesprochen wurde ist die Überschreibung der toString Methode. Jede Klasse erbt standardmäßig in Java von der Klasse Objekt, mein ich. Dort gibt es eine toString Methode. Default mäßig gibt die Klasse über toString einen String der das Objekt serialisiert (meist nutzlos) darstellt.

Also zum Überschreiben der Methode ist @Override wichtig.
Implementiere also nun folgendes in deine Coach-Klasse:
Code:
@Override
public String toString() {
   StringBuilder sb = new StringBuilder(coachName); // stringbuilder ist deutlich schneller (besseres stringhandling)
   sb.append(" hat folgende Kunden: ");
   for(Singer s : customers) {
     sb.append("\n");
     sb.append(s.getName()); // oder toString Methode von Singer
   }
   sb.append("Weiterer Text...");
   return sb.toString();
}
Das wäre der vollständige Workaround für diese Problematik.
Hoffe es hilft dir.

#edit:
Deine Main-Methode ist ja soweit immer das Gleiche.
Die Ausabe wäre nun jedoch nur noch:
Coach c = ...
System.out.println(c); // .toString wird automatisch aufgerufen (kann aber auch geschrieben werden, c.toString())


lg, Tim
RecK is offline  
Thanks
1 User
Old 12/31/2014, 01:38   #7
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
Das sind Hausaufgaben, und dafür darf er natürlich nicht den vollen Sprachumfang nutzen. Das mit einem Array zu lösen ist in der Praxis natürlich nicht gut, aber hier geht es darum, dass er es trotzdem auch damit lösen kann.
Analog darf er natürlich auch nicht toString() nutzen (bzw. muss wenn dann toString() in ausgabe() aufrufen), sondern muss sich an die Aufgabenstellung halten.
StringBuilder ist nicht schneller, bzw. die manuelle Konkatenation wird vom Compiler optimiert (und ggf. durch einen StringBuilder ersetzt).
"select" ist ein sinnvoller Name, weil ein Coach einen Singer beim Context für sein Team "auswählt".
dowhile is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
[java] arbeiten mit einem array?
12/18/2014 - Java - 3 Replies
#solved <3
[Java] Array zusammengesetzt ausgeben ?
11/05/2014 - Java - 8 Replies
Hallo, Community. Ich habe in meinem Code einen Array, mit verschiedenen Werten. Diesen möchte ich zusammengesetzt ausgeben lassen und auch verwenden können. Ausgeben lassen habe ich diesen so: for(String x : array){ System.out.print(x); } So werden die einzelnen Werte aber nur aneinander angereiht, und ich kann die ganze Zusammensetzung nicht als Variable speichern bzw. benutzen.
JAVA problem array sorting
09/28/2012 - General Coding - 1 Replies
i use three arrays where in System.out.println("Enter number of process: "); int process = in.nextInt(); String name = new String; int age = new int; double income = new double; bla bla bla so basically i used three arrays and a for loop and the outcome is this. (note: this is a user input)
[Java] Problem mit Array
10/17/2011 - General Coding - 5 Replies
Hallo lieber User ! Ich habe hier ein Programm das ein Array mit Zufallszaheln befüllt, und es dann mit einer anderen Methode durch Beistriche trennt. Mein Problem liegt in der Testklasse, da er mir da zwar die Ziffern durch Beistriche trennt, diese aber nicht mehr zufällig sondern alle gleich sind. z.b eingabe : 5 ausgabe : 1,1,1,1,1, public class ArrayMethoden { public static int zufallsArray (int anzahl) { int a = new int;
java - switch -> case frage [array]
12/29/2010 - General Coding - 6 Replies
hey hey... hab ein kleines problem, mit der switch - case abfrage mit nutzen von arrays... switch (zuf){ case wetten:uebereinstimmungen = 1;break; } zeigt der mir nen fehler an , mit ner einfachen if-abfrage klappt es zwar, aber sieht mit switch-case sauberer aus, da es mehrere sind...



All times are GMT +2. The time now is 16:16.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.