Kurze Frage zu Array

Jetzt muss ich ja beim Client das ausgeben. und zwar hab ich das folgendermaßen gemacht bevor ich von dir die änderungen bekommen habe. Hab ja erstmal mit ArrayList das ganze gemacht wobei das dann ja falsch war, da ich das ja mit Arrays machen musste.. im Beispiel zu holeCDProKategorie -->CD[]

So in meiner Client.java hab ich folgendes definiert:

Java:
Client.java:

		if(wahl.equals("3")){
			System.out.println("Geben Sie eine Kategorie ein:");
			
			String katCD = scanner.next();
			
			ArrayList<CD> tmp = new ArrayList<CD>();
			
			System.out.println(tmp.size());

			tmp = service.holeCDProKategorie(katCD);
			
			System.out.println("titel\n isbn\n autor\n kategorie\n");

			for(int i=0; i < tmp.size(); i++){
				CD holeCdKat = tmp.get(i);
				System.out.print(holeCdKat.titel + "\t");
				System.out.print(holeCdKat.isbn + "\t");
				System.out.print(holeCdKat.autor + "\t");
				System.out.print(holeCdKat.kategorie + "\t");
				System.out.println();
			}
		}

Also der Benutzer hat die Chance eine Auswahl zu treffen.. wenn er die 3 eingibt wird der folgende Code oben ausgeführt.. aber ich müsste ja ArrayList<CD> ersetzen durch CD[] richtig?


edit:

Noch ne Frage zu meiner Initialisierung:

Java:
Manager.java:

	//CDManager initialisieren
	public void initialisiereCDManager() throws RemoteException {
		File txtDat = new File("cd.txt");
		
		Scanner scanner = null;
		
        try { 
        		scanner = new Scanner(txtDat);
        } catch (FileNotFoundException e){
			  System.out.println("Die Textdatei cd.txt wurde nicht gefunden.\n");
			  System.exit(0);
          }
          
        while(scanner.hasNext()){
        	String tmp = scanner.nextLine();
        	
        	String[] varAuswahl = tmp.split(";");
        	
        	CD tmpCD = new CD();
        	
        	tmpCD.autor = varAuswahl[0];
        	tmpCD.isbn = varAuswahl[1];
        	tmpCD.kategorie = varAuswahl[2];
        	tmpCD.titel = varAuswahl[3];
        	
        	cds.add(tmpCD);
        }
}

Wenn ich das Programm teste kommt immer die Exception raus.. Woran kann das liegen?
 
Zuletzt bearbeitet:
Code:
Arraylist durch Array ersetzen: Ja, genau.
ArrayList<CD> -> CD[]
.size() -> .length
.get(i) -> [i]


Zur zweiten Frage: Welche Exc. kommt in welcher Zeile?
 
Zur zweiten Frage: Welche Exc. kommt in welcher Zeile?

Java:
    //CDManager initialisieren
    public void initialisiereCDManager() throws RemoteException {
        File txtDat = new File("cd.txt");
        
        Scanner scanner = null;

        System.out.println(txtDat.getAbsolutePath());   //die hab ich neu hinzugefügt
	System.out.println(txtDat.exists());                    //das hier auch.
        
        try { 
                scanner = new Scanner(txtDat);
        } catch (FileNotFoundException e){
              System.out.println("Die Textdatei cd.txt wurde nicht gefunden.\n"); //die hier
              System.exit(0);
          }

Jetzt wenn ich den Server starte kommt folgende Ausgabe:

E:\workspace\RMIRemoteServer\cd.txt
false
Die Textdatei cd.txt wurde nicht gefunden.
 
ja das ist ja das problem... ich hab die cd.txt im verzeichnis RMIRemoteServer drin.. es ist halt eine leere Datei und die soll dann mittels Client durch Eingaben gefüllt werden.

Nur ich komm leider nicht bis zu der Auswahl und den dazugehörigen eingaben.
 
Java:
		if(wahl.equals("2")){
			System.out.println("Folgende ISBN Nummern sind eingetragen: ");

			String[] tmp = new String[cds.length]; //Diese Zeile hier
			
			tmp = service.holeAlleISBN();
			
			for(int i=0; i < tmp.length; i++){
				System.out.println(tmp[i]);
			}
		}

Müsst ich da auch ein new String[j] machen? und als int j=0; definieren****
 
Sorry, wenn das so direkt kommt, aber hast du dir überhaupt die Grundlagen angeschaut? Ich hab immer mehr das Gefühl, dass du von jetzt auf gleich übers Knie gebrochen eine Client-Server-Geschichte aufstellen versuchst.

EDIT:
Und dein Code müsste eigentlich so aussehen:
Java:
 if(wahl.equals("2")){
            System.out.println("Folgende ISBN Nummern sind eingetragen: ");
 
            String[] tmp =  service.holeAlleISBN();
            
            for(int i=0; i < tmp.length; i++){
                System.out.println(tmp[i]);
            }
        }
Es macht kein Sinn ein neues Array zu instanziieren, wenn du die Instanz eh wieder übern Haufen wirfst und der Variable eine neue Referenz zuweist.
 
Zuletzt bearbeitet:
Ja hab ich.. ich wills ja auch richtig verstehen.. warum er grad die fehlermeldung ausgibt obwohl ja die datei vorhanden ist.
 
Java:
	public CD holeCD(String isbn) throws RemoteException {
	    int i;
	    for(i = 0; i < cds.size(); i++) {
	        if(cds.get(i).isbn.equals(isbn))
	            return cds.get(i);
	    }
	    return null;
	}

Dann könnt ich ja das hier genauso in der Ausgabe machen wie bei den holeAlleISBN oder?

Java:
		if(wahl.equals("4")){
			System.out.println("Folgende CDs sind vorhanden: ");
			
			CD tmp = service.holeCD();
			
			for(int i=0; i < tmp.length; i++){
				System.out.println(tmp(i));
			}
		}

Wobei ich hier ja was initialisieren müsste wegen dem (String isbn) stimmts?
 
Zurück