wo ist mein fehler?

newbee

Mitglied
sorry das ich noch einen Thread aufmache aber ansonsten antwortet ja eh keiner.
Ich habe wegen dem Programm schon graue Haare bekommen
Code:
import java.io.*;

public class CDSammlung{
    public static void main(String[] args)
    throws IOException
    {int a=0 ,Anzahllieder=0,Anzahlinterpret=0;
    String x= "";
    String[] NameCD;
    String[][]lied;
    String[][] interpret;
    interpret     = new String[999][];
    lied          = new String[999][];
    NameCD        = new String[999];

    BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("*CD-Datenbank*");
    System.out.println();
        while(!(x.equals("nein") )) {
            System.out.println("Wollen Sie eine neue CD eingeben? Ja/Nein" );
            x = din.readLine();
                if(x.equals("nein")) break;
                if(x.equals("ja"))
            System.out.print("Wie viele Lieder sind auf der "+(a+1)+ " CD? ");
            Anzahllieder = Integer.parseInt(din.readLine()); 
            lied = new String[999][Anzahllieder];
            System.out.print("Wieviele Interpreten sind auf der"+(a+1)+" CD? ");
            Anzahlinterpret = Integer.parseInt(din.readLine());
            interpret[a] = new String[Anzahllieder];
            System.out.println("Bitte geben die Namen der "+(a+1)+" CD ein ");
            NameCD[a] = din.readLine();

            for ( int i = 0; i < lied[a].length; i++) {    //lenght
                System.out.println();
                   System.out.print("Bitte geben Sie den Namen des "+i+1+". Liedes der "+(a+1)+" CD ein: ");
                    lied[a][i] = din.readLine();
                      System.out.println();

            for ( int j = 0; j< interpret[a].length; j++){ //lenght
                System.out.println();
                 System.out.print("Bitte geben sie den Namen des " +j+1+ " Interpreten der "+(a+1)+" CD ein: ");
                  interpret[a][j] = din.readLine();
                   System.out.println();
            }
       
        a++; }
       
        }
    System.out.println("Wollen Sie die Daten aller bis jetzt eingebenen CD's angezeigt bekommen Ja/nein ? ");
    x = din.readLine();
    if(x.equals("ja")){
        for (int z=0; z<a; z++) {
            System.out.println(" Der name der " +(z+1)+" CD ist " + NameCD[z]);
            for ( int i=0; i<lied[z].length; i++)
              System.out.println(" das " +(i+1)+" lied ist "+ lied[z][i]);
               for (int i=0; i<interpret[z].length;i++)
               System.out.println(" der " +(i+1)+ " interpret ist " + interpret[z][i]);
        }



            }
        }
    }
wenn ich ich immer nur ein Lied und einen Interpreten eingebe kommt fast eine richtige Ausgabe zustande. Die letze CD macht er immer richtig(also CDNamen, Liednamen und Interpretennamen) aber bei den CDs davor ist der Liedname imer "NULL" warum das denn, wenn die letzte CD doch richtig ausgegeben wird? Mein nächstes Problem ist, wenn ich mehrere Titel eingeben will kommt immer java.lang.NullPointerException und außerdem zählt der falsch. Wenn ich den Titel+Interpret von der 1. CD eingegeben habe fragt der nach dem 11. und dann nach dem 21... Liedtitel bzw Interpreten. Was ist an meiner For schleife falsch? Wie kann ich das machen, dass der User nachträglich Daten vom Interpreten und Liedtitel änder kann bzw ganze CD rauslöschen(ohne das "Lücken" in meinen Feldern entstehen). wäre euch echt sehr dankbar wenn mir jemand helfen kann
 
Wie im ICQ besprochen... :)
achso...
Es wird nicht auf richtigkeit bei der Eingabe geprüft...
Will dir ja noch bischen Arbeit überlassen :)
PHP:
/**
 * @author Administrator
 *
 * 
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CDSammlungAsArray {
	public static void main(String[] args) throws IOException {
		int countCds = 0;
		int countSongs = 0;
		String NameCD;
		String NameInterpret;
		String NameTitel;
		
		BufferedReader din =
			new BufferedReader(new InputStreamReader(System.in));
		System.out.println("*CD-Datenbank*");
		
		System.out.println("Wieviele CD´s wollen Sie erstellen?");
		countCds = Integer.parseInt(din.readLine());
		
		Object[][] cds = new Object[countCds][2];
		String[][] song;
		for(int i = 0; i < countCds; i++){
			System.out.println("CD: "+(i+1));
			System.out.println("Bitte geben Sie den namen der CD ein.");
			NameCD = din.readLine();
			System.out.println("Bitte geben Sie nun die Anzahl der Lieder an.");
			countSongs = Integer.parseInt(din.readLine());
			song = new String[countSongs][2];
			
			for(int j = 0; j < countSongs; j++){
				System.out.print("Bitte geben Sie den Interpreten des "	+ (j+1)	+ ". Liedes ein: ");
				NameInterpret = din.readLine();
				System.out.print("Bitte geben Sie den Titel des " + (j+1) + ". Liedes ein: ");
				NameTitel = din.readLine();
				System.out.println();		
				song[j][0] = NameInterpret;
				song[j][1] = NameTitel;
			
			}
			cds[i][0] = NameCD;
			cds[i][1] = song;
		}
		
		/* ausgabe */
		
		for(int i = 0; i < cds.length;i++){
			System.out.println("CD "+(i+1)+ ": "+cds[i][0]);
			song = (String[][])cds[i][1];	
			for(int j = 0; j < song.length;j++){
				System.out.println("Nr. " + (j+1) + "	" + song[j][0] +  "	" + song[j][1]);
			}		
		}
	}
}


hmm naja
und hier noch die Object Variante
PHP:
/**
 * @author Administrator
 *
 * 
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

public class CDSammlung {
	public static void main(String[] args) throws IOException {
		int a = 0, Anzahllieder = 0;
		String x = "", NameCD, NameInterpret, NameTitel;
		List cdList = new Vector();
		
		BufferedReader din =
			new BufferedReader(new InputStreamReader(System.in));
		System.out.println("*CD-Datenbank*");
		System.out.println();
		while (!(x.equals("nein"))) {
			System.out.println("neue CD Ja/Nein");
			x = din.readLine();
			if (x.equals("nein"))
				break;
			if (x.equals("ja"))
				System.out.print("Anzahl der Titel:");
			
			
			Anzahllieder = Integer.parseInt(din.readLine());
			System.out.println("Bitte geben die Namen der CD ein ");
			
			NameCD = din.readLine();
			Cd cd = new Cd(NameCD); // creates a new cd 
			cdList.add(cd);
						
			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();
				
				Song song = new Song(NameInterpret,NameTitel);
				cd.addSong(song);
				
				a++;
			}
		}
		
		System.out.println(
			"Wollen Sie die Daten aller eingebenen CD's angezeigt bekommen Ja/nein ? ");
		x = din.readLine();
		if (x.equals("ja")) {
			Iterator it = cdList.iterator();
			while (it.hasNext()) {
				System.out.println(it.next());
			}
		}
	}
}

class Cd {
	String name;
	List songs = new Vector();
	
	public Cd(String name){
		this.name = name;
	}
	
	public List getSongs(){
		return songs;
	}

	public void addSong(Song song){
		songs.add(song);
	}
	
	public String getName() {
		return this.name;	
	}
		
	public String toString(){
		StringBuffer sb = new StringBuffer();
		sb.append(name).append("\n");
		Iterator it = songs.iterator();
		int count = 1;
		while(it.hasNext()){
			sb.append(count).append(".	").append(it.next()).append("\n");
			count++;
		}
		return sb.toString();
	}	
}

class Song {
	String interpreter;
	String titel;
	
	public Song(String interpreter,String titel){
		this.interpreter = interpreter;
		this.titel = titel;
	}
	
	public String getInterpreter() {
		return this.interpreter;	
	}
	
	public String getTitel() {
		return this.titel;	
	}
	
	public String toString(){
		return titel +"		"+interpreter;
	}
	
}
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück