dreidimensionales feld

Status
Nicht offen für weitere Antworten.

Bladerunner

Mitglied
hallo ich habe ein datenbankprogramm geschrieben, was bis zu 1000 cds verwalten kann. jede cd soll einen namen, beliebig viele titel und interpreten haben. die daten für die namen titel und interpreten sollen in ein bzw 2 dimensionalen feldern gespeichert werden. der nutzer soll einige cd eingeben können. zuerst die anzahl der interpreten und lieder, dann den namen der cd, danach die namen aller interpreten und alle liedtitel.
ich habe follgendes programm geschrieben, bin aber nicht zufrieden weil es nicht genau das macht was es soll und die ausagabe nicht stimmt. kann mir jemand verbesserungsvorgschläge liefern das ich die daten gleich richtig in 2dimensionale felder speichere und eine richtige ausgabe habe. bitte
Code:
import java.io.*;

public class CDSammlung{
    public static void main(String[] args)
    throws IOException
    {int Durchlauf = 1,Anzahllieder = 2;
    String x =" ";
    String[] CDName;
    String[] CDdaten;
    CDName = new String[1000];
    CDdaten = new String[Anzahllieder];
    String NameCD,NameInterpret,NameTitel;
    BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("*CD-Datenbank*");
    System.out.println();
        while(!(x.equals("Nein") )) {
            System.out.print("neue CD Ja/Nein: " );
                x = din.readLine();
                System.out.println();
                    if(x.equals("Nein")) break;
                    if(x.equals("Ja"))
        System.out.print("Anzahl der Titel: ");   
            Anzahllieder = Integer.parseInt(din.readLine()); 
            System.out.println();
        System.out.print("Bitte geben die Namen der CD ein: ");
            NameCD = din.readLine();
            CDName[Durchlauf] = NameCD;
                for ( int i = 1; i <= Anzahllieder; i++){
                    System.out.println();
                        System.out.print("Bitte geben Sie den Interpreten des "+i+". Liedes ein: ");
                            NameInterpret = din.readLine();
                    System.out.println();
                        System.out.print("Bitte geben Sie den Titel des "+i+". Liedes ein: ");
                            NameTitel = din.readLine();
                    System.out.println();
                        Durchlauf++;
                 CDdaten[i] = NameInterpret + NameTitel;
                      
               }
        }
        System.out.print("Wollen Sie alle Daten der CD's angezeigt bekommen Ja/Nein: ");
            x = din.readLine();
        if (x.equals("Ja"))
            for ( int i = 0 ; i <= Anzahllieder; i++){
                for ( int j = 0 ; j < Durchlauf ; j++)
                        System.out.println(CDName[j]);
                            System.out.println(CDdaten[i]);
            }
            }
      }
 

mariopetr

Bekanntes Mitglied
also wenn ich deine vorgaben etwas anedern darf, kann ich den code etwas verschoenern
(mussen es 1000 cd's sein, kann man erst den cdnamen und dann die tietel angeben usw)
 

Bladerunner

Mitglied
ja ja mach ruhig, bin dankbar für jeden hinweis. das wichtigste ist das er mir die asugabe richtig bringt also alle eingegeben cds mit titeln und interpreten. müssen auch nicht 1000 sein der user soll halt beliebige viel cds eingeben können(max bis tausend)
danke schonmal im vorraus
 

mariopetr

Bekanntes Mitglied
nur eine kleine anregung, welche recht schnell zusammengeschustert ist und noch verbessert werden kann

Code:
package de.javaforum.cd;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class CD // entity holder einer CD
{
	private final String f_name;
	private final Set f_tracks= new HashSet();

	public CD(String name)
	{
		f_name= name;
	}

	public void addTrack(Track track)
	{
		f_tracks.add(track);
	}
	/**
	 * @return Returns the name.
	 */
	public String getName()
	{
		return f_name;
	}

	/**
	 * @return Returns the tracks.
	 */
	public Set getTracks()
	{
		return Collections.unmodifiableSet(f_tracks);
	}
}

package de.javaforum.cd;


public class Track //entity holder einse tracks innnerhalb einer cd
{
	private final String f_name;
	private final String f_interpret;
	
	public Track(String name,String interpret) throws IllegalArgumentException
	{
		if(name==null || name.length()==0)
			throw new IllegalArgumentException("name should be a valid String"); //  //$NON-NLS-1$
		if(interpret==null || interpret.length()==0)
			throw new IllegalArgumentException("interpret should be a valid String"); //  //$NON-NLS-1$
		f_name=name;
		f_interpret=interpret;
	}
	
	public String getName()
	{
		return f_name;
	}

	/**
	 * @return Returns the interpret.
	 */
	public String getInterpret()
	{
		return f_interpret;
	}

}

package de.javaforum.cd;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CDDataBase
{
	private Map m_cds= new HashMap();

	public CDDataBase()
	{
		//TODO
	}

	public void load(URL url) throws Exception
	{
		Map loaded= null;
		try
		{
			XMLDecoder decoder= new XMLDecoder(url.openStream());
			loaded= (Map) decoder.readObject();
		}
		catch (Exception e)
		{
			loaded= null;
			throw new Exception("unable to load database: " + e.getMessage()); //  //$NON-NLS-1$
		}
		if (loaded != null)
		{
			m_cds= loaded;
		}
	}

	public void save(URL url) throws Exception
	{
		try
		{
			XMLEncoder encoder=
				new XMLEncoder(url.openConnection().getOutputStream());
			encoder.writeObject(m_cds);
		}
		catch (Exception e)
		{
			throw new Exception("unable to store database: " + e.getMessage()); //  //$NON-NLS-1$
		}
	}

	public void add(CD cd) throws Exception
	{
		if (cd == null)
		{
			throw new IllegalArgumentException("cd can not be null"); //  //$NON-NLS-1$
		}
		if (m_cds.containsKey(cd.getName()))
		{
			throw new Exception("unique key CD.name vialoted"); //  //$NON-NLS-1$
		}
		m_cds.put(cd.getName(), cd);
	}

	public CD get(String name)
	{
		CD result= null;
		if (m_cds.containsKey(name))
		{
			result= (CD) m_cds.get(name);
		}
		return result;
	}

	public List getValues()
	{
		return new ArrayList(m_cds.values());
	}
}

package de.javaforum.cd;

import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class CDDBTest // die testklasse
{
	static CDDataBase dataBase= new CDDataBase();

	public static void main(String[] args)
	{
		try
		{
			for (int i= 1; i <= 100; i++)
			{
				CD cd= new CD("CD-" + i); //  //$NON-NLS-1$
				for (int j= 1; j <= 20; j++)
				{
					cd.addTrack(new Track("Title-" + j, "interpret-" + i)); //   //$NON-NLS-1$//$NON-NLS-2$
				}

				dataBase.add(cd);
			}

			System.out.println("my database:"); //  //$NON-NLS-1$
			List cds= dataBase.getValues();
			Collections.sort(cds, new CDComparator());
			Iterator iterator= cds.iterator();
			while (iterator.hasNext())
			{
				format((CD) iterator.next());
			}

		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * @param cd
	 */
	private static void format(CD cd)
	{
		System.out.println("CD name=" + cd.getName() + " trackcount=" + cd.getTracks().size()); //  //$NON-NLS-1$
		// //$NON-NLS-2$
		Set tracks= cd.getTracks();
		Iterator iterator= tracks.iterator();
		System.out.print("("); //  //$NON-NLS-1$
		while (iterator.hasNext())
		{
			Track track= (Track) iterator.next();
			System.out.print("[" + track.getName() + ";" + track.getInterpret() + "]"); //  //$NON-NLS-1$
			// //$NON-NLS-2$
			// //$NON-NLS-3$
		}
		System.out.println(")"); //  //$NON-NLS-1$
	}

	private static class CDComparator implements Comparator
	{

		/*
		 * (non-Javadoc)
		 * 
		 * @see java.util.Comparator#compare(java.lang.Object,
		 *         java.lang.Object)
		 */
		public int compare(Object o1, Object o2)
		{
			return ((CD) o1).getName().compareTo(((CD) o2).getName());
		}

	}
}
 

Bladerunner

Mitglied
Danke für die Mühe nur leider ist das ein wenig zu kompliziert .... für mein Programm fehlt mir nur noch die Ausgabe mit mehrdimesionalen Arrays.... wie kann ich denn z.B. mein Array richtig "füttern" mit erst CDName dann Interpret und zum Schluss Liedtitel ?

p.s. nochmal Danke für die Mühe!
 

newbee

Mitglied
wenn ich es richtig verstanden habe will er nur das seine ausgabe mit den feldern stimmt. es soll ja keine richtige datenbank sein, welche die daten auch speichert. wenn man das programm beendet ist wieder alles gelöscht
 

mariopetr

Bekanntes Mitglied
mag sein, aber ehrlich gesagt hat das, was er geschrieben hat mit oo (java) relativ wenig zu tun. mag sein das ich doppelt so viel sourcen brauche. aber wenn ich die laenge eines tracks oder irgend eine andere info nachtraeglich hinzufuegen will, brauche ich ein paar minuten, er wahrscheinlich stunden. aber wenn er nicht will, auch nicht schlimm.
 

Bladerunner

Mitglied
ich würde ja schon lieber ein sinnvolles progi schreiben was auch speichern würde und all das...aber leider brauch ich das progi halt nun so wie oben geschrieben nur halt noch die ausgabe mit mehrdimesionalen arrays... (is ne aufgabe für die uni, und mehr als das was oben verwende hatten wir noch nicht bzw dürfen wir nicht verwenden)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Dreidimensionales Array mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 18
V Dreidimensionales int Array erweitern/verkleinern Java Basics - Anfänger-Themen 4
C Suchhinweise für dreidimensionales Java Basics - Anfänger-Themen 14
F Dreidimensionales Array? Wie initialisieren? Java Basics - Anfänger-Themen 5
S Dreidimensionales Array Java Basics - Anfänger-Themen 4
I Reflection: Suche Feld + in Unterklassen Java Basics - Anfänger-Themen 7
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
wofus Interface EditText Feld Multiline Dezimalzahl Java Basics - Anfänger-Themen 2
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
C Feld printen Java Basics - Anfänger-Themen 4
B Zu Property Feld weitere Informationen hinzufügen? Java Basics - Anfänger-Themen 4
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
J Button als Feld nutzen Java Basics - Anfänger-Themen 17
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
S Methoden Feld vergrößern Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
neerual Feld mit Einsen und Nullen füllen und überschreiben Java Basics - Anfänger-Themen 1
O Schlange als dynamisches Feld - Aufwand Java Basics - Anfänger-Themen 16
L Feld mit beliebiger Anzahl von Buchstaben füllen... Java Basics - Anfänger-Themen 5
T Suchen in sortiertem Feld Java Basics - Anfänger-Themen 2
tuc Erste Schritte verschiedene objekte in einem feld speichern Java Basics - Anfänger-Themen 4
W Processing bestimmtes Feld einfärben Java Basics - Anfänger-Themen 8
T csv Datein einlesen und ausgewähltes Feld ausgeben Java Basics - Anfänger-Themen 4
E Feld von verketteten Listen Java Basics - Anfänger-Themen 11
N zweidimensionales 10x10 Feld erstellen Java Basics - Anfänger-Themen 3
M Feld in untermethoden ausgeben Java Basics - Anfänger-Themen 9
Q OOP Mehrere Instanzen auf ein Feld Java Basics - Anfänger-Themen 13
M Rekursive Suche in einem Feld Java Basics - Anfänger-Themen 11
W 10x10 Feld mit Zufallszahlen erstellen Java Basics - Anfänger-Themen 4
M Wert aus String Feld anzeigen Java Basics - Anfänger-Themen 7
M Warum ist dieses Feld der Klasse Math immutable? Java Basics - Anfänger-Themen 7
D Datentypen Zahlen aus einem alphanummerischen Feld in ein Interger Feld portieren Java Basics - Anfänger-Themen 13
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
D Datentypen Ein Integer Feld in einen String wandeln ohne Nullenunterdrückung Java Basics - Anfänger-Themen 6
V Feld sortieren mit Backtracking Java Basics - Anfänger-Themen 1
U Spielfelde erstellen & via Brute-Force jedes Feld aktivieren Java Basics - Anfänger-Themen 4
Z feld[zahl()-1] funktioniert nicht Java Basics - Anfänger-Themen 6
P Collections Feld aus Sets erstellen. Java Basics - Anfänger-Themen 7
E Methode, zwei Klassen, Feld Java Basics - Anfänger-Themen 9
T Ein Feld umdrehen Java Basics - Anfänger-Themen 5
T Erste Schritte Java ein Array Feld[index] zurueckgeben? Java Basics - Anfänger-Themen 20
Z Feld befüllen Java Basics - Anfänger-Themen 8
N Klasse/Konstruktor/Feld Java Basics - Anfänger-Themen 6
W Rückgabe Methode mit Feld Java Basics - Anfänger-Themen 4
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
E Algorithmus für kart. Produkt: als int [] Feld repräsentiert Java Basics - Anfänger-Themen 10
T Generisches Feld in nicht-generischer Klasse möglich? Java Basics - Anfänger-Themen 5
S Einzelne Werte von Array-Feld löschen Java Basics - Anfänger-Themen 15
D Mysql ob feld existiert Java Basics - Anfänger-Themen 2
N Input/Output 2D Feld ausgeben? Java Basics - Anfänger-Themen 3
R Bestehendes Array ein Feld hinzufügen Java Basics - Anfänger-Themen 4
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
M Applet ist nur graues Feld Java Basics - Anfänger-Themen 12
G Gleiche Elemente in Feld zählen Java Basics - Anfänger-Themen 13
G Elemente von Feld und Liste auf Gleichheit überprüfen Java Basics - Anfänger-Themen 13
R Nächstes leeres Feld im array füllen? Java Basics - Anfänger-Themen 14
R dynamisches zweidimensionales Feld erzeugen Java Basics - Anfänger-Themen 8
L Array um ein Feld erweitern Java Basics - Anfänger-Themen 13
E Button/Feld deaktivieren, ohne Styleauswirkung? Java Basics - Anfänger-Themen 5
D OOP Objekte in einem Feld ablegen Java Basics - Anfänger-Themen 7
P HTML <input> Feld in einem JLabel auslesen Java Basics - Anfänger-Themen 4
H text feld eine variable zu weisen Java Basics - Anfänger-Themen 3
J select-feld auswahl, jsp javascript Java Basics - Anfänger-Themen 2
M Feld übergeben & dann Werte in TextFelder schreiben Java Basics - Anfänger-Themen 4
B Wie kann ich unterschiedliche Datentypen in einem Feld abbilden? Java Basics - Anfänger-Themen 5
K Datentypen Referenzdatentyp Array (Feld) und Objektdatentyp Java Basics - Anfänger-Themen 14
I Memory-Spiel Feld nur einmal mischen Java Basics - Anfänger-Themen 2
K Random Zahlen in ein Feld Java Basics - Anfänger-Themen 4
C Datentypen ArrayList.remove(index) hinterlässt leeres Feld Java Basics - Anfänger-Themen 5
B Welcher Feld Typ für verschiedene Datentypen? Java Basics - Anfänger-Themen 4
B Static Referenz auf Non-static Feld Java Basics - Anfänger-Themen 6
C 1D Feld in Methode einbinden? Java Basics - Anfänger-Themen 4
B Zeichenfarbe in Feld speichern Java Basics - Anfänger-Themen 7
J Feld in Tabelle suchen Java Basics - Anfänger-Themen 8
K Java String UNICODE in DB UTF-8 Feld einfügen Java Basics - Anfänger-Themen 3
K feld von basisklasse ändern Java Basics - Anfänger-Themen 11
S Nullpointererror bei JButton-Feld Java Basics - Anfänger-Themen 2
A Ein Feld meiner jTable färben Java Basics - Anfänger-Themen 6
T Feld sortieren aber vorherigen Feldindex der Werte behalten Java Basics - Anfänger-Themen 9
kulturfenster Info-Feld erstellen Java Basics - Anfänger-Themen 2
G Feld auslesen und in Integer umwandeln Java Basics - Anfänger-Themen 4
G Feld in umgekehrter Reihenfolge an zweites Feld übergeben Java Basics - Anfänger-Themen 5
G Stopp Feld programmieren für Spielbrett Java Basics - Anfänger-Themen 8
K 3 Dimensionales Feld - Java und seine Grenzen Java Basics - Anfänger-Themen 4
S kompletten Datensatz statt nur ein Feld auslesen lassen,wie? Java Basics - Anfänger-Themen 3
H combobox auf leeres Feld prüfen? Java Basics - Anfänger-Themen 10
M wie auf ein feld mit leerzeichen in einem char array prüfen? Java Basics - Anfänger-Themen 4
G Feld Ein-/Ausgabe Java Basics - Anfänger-Themen 2
W Feld von boolean in main initialisieren. Java Basics - Anfänger-Themen 4
S Array Kopie zwei in eindimensionales feld Java Basics - Anfänger-Themen 4
S Feld<T> Java Basics - Anfänger-Themen 2
Z Feld prüfen ob 3 gleiche zahlen nach einander vorkommen Java Basics - Anfänger-Themen 3
B Char Feld -> "Zeilenumbruch" Java Basics - Anfänger-Themen 5
N zahlen und operatoren gemischt in einem Feld Java Basics - Anfänger-Themen 9
E JFileChooser- Dateiname Feld? Java Basics - Anfänger-Themen 2
H Wert an Feld übergeben? Java Basics - Anfänger-Themen 23
E Adobe Designer Drop Down Feld & If Abfrage Java Basics - Anfänger-Themen 4
J 2 dinemsionales Feld Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben