Aufgabe 5.3

HILFE!!!

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 5.3
Hi,

kann nichts von meinen erstellten java-Dateien auf den Server hochladen,
habe ich irgendetwas falsch gemacht??? bin seit heute Mittag dran und drehe langsam durch, hier meine Kaffees…

public class Kaffee {

//KaffeeVerwaltung als Instanz aufrufen
public static KaffeeVerwaltung meinKaffeeSortiment = new TKaffeeVerwaltung();

public static void main(String [] myArgs){
	meinMenu(); //Menu als eine Methode deklariert
}//Ende main

//Menu zum aufrufen der einzelnen public methoden von KaffeeVerwaltung
static void meinMenu(){
	//Hilfsvariable zum zwischenspeichern der eingabe
	char eingabe = ' ';
	
	//Menu-Schleife die ohne Pause weitermacht bis irgendwann break Anweisung kommt
	while(true){
		
		//Menu Grunddesign
		System.out.println("===================================");
		System.out.println("= Kaffee Menu                        =");
		System.out.println("=---------------------------------=");
		System.out.println("= [1] Kaffeesorte anlegen            =");
		System.out.println("= [2] Kaffeesorte aendern            =");
		System.out.println("= [3] Kaffeesorten anzeigen          =");
		System.out.println("=---------------------------------=");
		System.out.println("= [Q] Programm beenden            =");
		System.out.println("===================================");
		
		//Aufruf der eingabe ueber die Hilfsklasse Tastatur
		eingabe = Tastatur.readchar();
		
		//Uberpruefen ob programm beendet werden soll, wenn ja break
		if(eingabe == 'q' || eingabe == 'Q') break;
		
		//sonst Fallunterscheidung ob MenuTaste eingegeben wurde
		else
			switch(eingabe){
				case '1': {
					//Kaffeesorte anlegen
					meinKaffeeSortiment.legeKaffeesorteAn();
					break;
				}
				case '2': {
					//Abfrage nach zu aendernder Kaffeesorten nummer
					System.out.print("Kaffeesorten nummer: ");
					//Kaffeesorte aendern
					meinKaffeeSortiment.aendereKaffeesorte(Tastatur.readint());
					break;
				}
				case '3': {
					//Kaffeesorten anzeigen
					meinKaffeeSortiment.zeigeKaffeesortenAn();
					break;
				}
				default:{
					//Ausgabe wenn kein Fall zutrifft
					System.out.println("Es wurde keine gültige Taste eingegeben!\n\n");
				}
			}
	}
	
	//Ab hier wird ausgefuehrt wenn Menu-Schleife verlassen wird
	System.out.println("\n\nAuf Wiedersehen!\n\n");
	
}//Ende meinMenu

}//Ende Klasse Kaffee

public class Kaffeesorte {

//Interne Variablen (diese sind private da kein public)
String sorte, Land, Roestung;
int jahr;
int nummer;

//Konstruktorhilfsvariable 
//(static damit der Wert bleibt, selbst bei neuen Instanzen dieser 
//Klasse, da ja jede Klasse eine eigene Nummer haben soll)
static int id = 0;

//Konstruktor
Kaffeesorte(){
	//die eigene Nummer wird von der Hilfsvariable uebernommen und anschliessend diese erhoeht
	nummer = id++;
	//Bei erstellen einer Kaffeesorte wird gleich nach eingabe der Daten gefragt
	eingabe();
}//Ende Konstruktor

//Methoden zur simplen Aenderung der internen Variablen
void sorteAendern(String into){
	sorte = into;
}
void LandAendern(String into){
	Land = into;
}
void roestungAendern(String into){
	roestung = into;
}
void jahrAendern(int into){
	jahr = into;
}

//Begin der public Methoden
public void aendern(){
	//Hilfsvariable zum zwischenspeichern der eingabe
	char eingabe = ' ';
	
	//Menu-Schleife die ohne Pause weitermacht bis irgendwann break Anweisung kommt
	while(true){

		//Menu Grunddesign
		System.out.println("\n===================================");
		System.out.println("= Kaffeesorte aendern                =");
		System.out.println("=---------------------------------=");
		System.out.println("= [1] Sorte                       =");
		System.out.println("= [2] Land                        =");
		System.out.println("= [3] Roestung                    =");
		System.out.println("= [4] Jahr                        =");
		System.out.println("=---------------------------------=");
		System.out.println("= [Z] Zurueck                     =");
		System.out.println("===================================");
		
		//Aufruf der eingabe ueber die Hilfsklasse Tastatur
		eingabe = Tastatur.readchar();
		
		//Uberpruefen ob schleife verlassen werden soll, wenn ja break
		if(eingabe == 'z' || eingabe == 'Z') break;
		
		//sonst Fallunterscheidung ob MenuTaste eingegeben wurde
		else
			switch(eingabe){
				case '1': {
					//Sorte aendern
					System.out.print("\nSorte: ");
					sorteAendern(Tastatur.readString());
					System.out.println("\n");
					break;
				}
				case '2': {
					//Land aendern
					System.out.print("\nLand: ");
					LandAendern(Tastatur.readString());
					System.out.println("\n");
					break;
				}
				case '3': {
					//Roestung aendern
					System.out.print("\nRoestung: ");
					roestungAendern(Tastatur.readString());
					System.out.println("\n");
					break;
				}
				case '4': {
					//Jahr aendern
					System.out.print("\nJahr: ");
					jahrAendern(Tastatur.readint());
					System.out.println("\n");
					break;
				}
			}
	}
	System.out.println("\n");
}//Ende Methode aendern

public void eingabe(){
	//Aufeinanderfolgende Abfrage aller Eigenschaften
	System.out.print("\nSorte: ");
	sorteAendern(Tastatur.readString());
	
	System.out.print("Land: ");
	LandAendern(Tastatur.readString());
	
	System.out.print("Roestung: ");
	roestungAendern(Tastatur.readString());
	
	System.out.print("Jahr: ");
	jahrAendern(Tastatur.readint());
	
	System.out.println("\n");
}//Ende Methode eingabe

public void ausgabe(){
	//Ausgabe dieser Kaffeesorte anhand der internen Variablen
	System.out.println("-> Kaffeesorte(" + nummer + ") Sorte: " + sorte + " Land: " + Land + " Roestung: " + Roestung + " Jahr: " + jahr);
}//Ende Methode ausgabe

}//Ende Klasse Kaffeesorte

public class KaffeeVerwaltung {

//Klasseninterne Variablen
int anzahlKaffeesorten;
Kaffeesorte KaffeesortenFeld[];

//Konstruktor
KaffeeVerwaltung(){
	//Initialisieren der Klasseninternen Variablen
	anzahlKaffeesorten = 0;
	KaffeesortenFeld = new Kaffeesorte[100]; //ein array der auf Laenge 100 vorreserviert wird
}//Ende Konstruktor

public void legeKaffeesorteAn(){
	//Ueberpruefung ob es erst 99 Kaffeesorten sind, wenn ja darf eine erstellt werden
	if(anzahlKaffeesorten < 100){
		//Erstellen einer Kaffeesorte durch initialisieren fuer die jeweilige stelle im array
		KaffeesortenFeld[anzahlKaffeesorten] = new Kaffeesorte();
		//und anschliessend erhoehen der Hilfsvariable zum mitzaehlen
		anzahlKaffeesorten++;
	}
	//sonst Fehlermeldung
	else System.out.println("\nMaximale Anzahl Kaffeesorten erreicht!\n");
}//Ende legeKaffeesorteAn

public void aendereKaffeesorte(int x){
	//Uberpruefen ob übergebene Kaffeesortennummer im Sortiment vorhanden ist
	if(x >= 0 && x < anzahlKaffeesorten) KaffeesortenFeld[x].aendern();
	//sonst Fehlermeldung
	else System.out.println("\nNummer nicht vergeben!\n");
}//Ende aendereKaffeesorte

public void zeigeKaffeesortenAn(){
	//Ueberpruefen ob ueberhaupt eine Kaffeesorte vorhanden zum anzeigen
	if(anzahlKaffeesorten > 0){
		System.out.println("\nKaffeesorten im Sortiment:");
		//Schleife zum Aufruf der public Methode ausgabe der Klasse Kaffeesorte 
		//fuer jede einzelne abgespeicherte Kaffeesorte im Array
		for(int i = 0; i < anzahlKaffeesorten; i++){
			KaffeesortenFeld[].ausgabe();
		}
		System.out.println("\n");
	}
	//sonst Fehlermeldung
	else System.out.println("\nNoch keine Kaffeesorten im Sortiment\n");
}//Ende zeigeKaffeesortenAn

}//Ende Klasse KaffeeVerwaltung


achso, wäre auch cool, falls ihr Fehler entdecken solltet, mich darauf hinweisen würdet :rolleyes:


Boah haste echt etwas übertrieben mit deinen Klassen…es geht auch deutlich einfacher.
Also wenn du deine Daten nicht auf den Server hochladen kannst dann hat das doch imho nichts mit deinem Quellcode zu tun.
Und soweit ich des richtig verstanden habe sollen wir die Klasse Kaffee nicht anrühren und nur so benutzen wie sie ist.

Was kommt denn für ne Fehlermeldung wenn dus versuchst?


ups, muss es wohl überlesen haben!!!
toll, und was mache ich jetzt???
hochladen konnte ich die jetzt, abewr 0%???
ich bin stier am verzweifeln :wand:
fange jetzt nicht nochmal an zu programmieren


Am besten du gehst von der kaffe Klasse aus und schreibst erst mal eine ganz einfache Klasse Kaffee…
es reicht wenn du wirklich nur die Funktionen implementierst die gebraucht werden, insbesondere bei der Kaffeeverwaltung.
Du sollst hier selber keinerlei Menüführung implementieren sondern nur die Funktionalität für dass in Kaffee vorhandene Menu erstellen.

Vergleiche z.B mal diese Klasse Kaffesorte mit deiner, dann sollte dir auffallen was bei dir zu viel ist:

public class Kaffeesorte {

	private String sorte;
	private String land;
	private String roestung;
	
	private int jahr;
	private int nummer;
		
	public Kaffeesorte(int nr) {
		nummer = nr;
	}
	
	private void sorteAendern(String s) {
		sorte = s;
	}
	
	private void landAendern(String l) {
		land = l;
	}
	
	private void roestungAendern(String r) {
		roestung = r;
	}
	
	private void jahrAendern(int j) {
		jahr = j;
	}
	
	public boolean aendern(String was, String neuerEintrag) {
		if (was.equals("sorte")) {
			sorteAendern(neuerEintrag);
			return true;
		}
		if (was.equals("land")) {
			landAendern(neuerEintrag);
			return true;
		}
		if (was.equals("roestung")) {
			roestungAendern(neuerEintrag);
			return true;
		}
		else {
			System.out.println("Bitte sorte, land oder roestung eingeben!");
			return false;
		}
	}
	
	public void eingabe(String s, String l, String r, int j) {
		sorteAendern(s);
		landAendern(l);
		roestungAendern(r);
		jahrAendern(j);
	}
	
	public void ausgabe() {
		System.out.println("\nSorte Nummer " + nummer + "\n" + "\nSorte: " + sorte + "\nLand: " + land + "\nRoestung: " + roestung +
				"\nJahr: " + jahr);
	}

ich weiß nicht wie die Testcases dieses Mal rumzicken aber die dritte Datei soll [m]Kaffeeverwaltung.java[/m] heißen (deine Klasse heißt bisweilen noch [m]KaffeeVerwaltung[/m]).


tja, das hat man davon wenn man stur anfängt loszuschreiben und die Aufgabenstellung nicht durchliest :wand:

die datei kaffee.java ist beim Öffnen mit dem Editor total umhergeschmissen, gibt es da was anders, womit ich die öffnen kann???


@dschulian,

ist mir auch aufgefallen, danke!!


Eines verstehe ich gerade absolut nicht:

die Datei Kaffee.java, muss da was abgeändert werden???


Da drin kann man sich schön austoben, wenn man seine Klassen [m]Kaffeesorte[/m] und [m]Kaffeeverwaltung[/m] ausgiebig testen will. Abgeben sollte man dann aber am besten wieder die ursprüngliche Datei.


OK, so hatte ich dies nämlich auch versatnden!

aber eines kann und will ich nicht verstehen: WARUM 0%???
Wie ist das bei Euch? :vogel:


kann mir mal jemand bitte sagen, wo bei mir der Fehler bei Kaffeeverwaltung ist?

public class Kaffeeverwaltung {

//Klasseninterne Variablen
int anzahlKaffeesorten;
Kaffeesorte kaffeesortenfeld[];

//Konstruktor
Kaffeeverwaltung(){
	//Initialisieren der Klasseninternen Variablen
	anzahlKaffeesorten = 0;
	kaffeesortenfeld = new Kaffeesorte[100]; //ein array der auf Laenge 100 vorreserviert wird
}//Ende Konstruktor

public static boolean legeKaffeesorteAn(){
	//Ueberpruefung ob es erst 99 Kaffeesorten sind, wenn ja darf eine erstellt werden
	if(anzahlKaffeesorten < 100){
		//Erstellen einer Kaffeesorte durch initialisieren fuer die jeweilige stelle im array
		kaffeesortenfeld[anzahlKaffeesorten] = new Kaffeesorte();
		//und anschliessend erhoehen der Hilfsvariable zum mitzaehlen
		anzahlKaffeesorten++;
	}
	//sonst Fehlermeldung
	else System.out.println("\nMaximale Anzahl Kaffeesorten erreicht!\n");
}//Ende legeKaffeesorteAn

public static boolean aendereKaffeesorte(int nr, String was, String
					neuerEintrag){
	//Uberpruefen ob übergebene Kaffeesortennummer im Sortiment vorhanden ist
	if(x >= 0 && x < anzahlKaffeesorten) kaffeesortenfeld[x].aendern();
	//sonst Fehlermeldung
	else System.out.println("\nNummer nicht vergeben!\n");
}//Ende aendereKaffeesorte

public static void zeigeKaffeesortenAn(){
	//Ueberpruefen ob ueberhaupt eine Kaffeesorte vorhanden zum anzeigen
	if(anzahlKaffeesorten > 0){
		System.out.println("\nKaffeesorten im Sortiment:");
		//Schleife zum Aufruf der public Methode ausgabe der Klasse Kaffeesorte 
		//fuer jede einzelne abgespeicherte Kaffeesorte im Array
		for(int i = 0; i < anzahlKaffeesorten; i++){
			kaffeesortenfeld[ i ].ausgabe();
		}
		System.out.println("\n");
	}
	//sonst Fehlermeldung
	else System.out.println("\nNoch keine Kaffeesorten im Sortiment\n");
}//Ende zeigeKaffeesortenAn

}//Ende Klasse Kaffeeverwaltung


Von welcher HTML-Seite hast du diesen Code?
Jawohl, HTML! Man beachte die Operatorzeichen &, <, >.


wieso html-seite?
Sind die Zeichen Java-ungeeignet???


public class Kaffeeverwaltung {

//Klasseninterne Variablen
int anzahlKaffeesorten;
Kaffeesorte KaffeesortenFeld[];

//Konstruktor
KaffeeVerwaltung(){
	//Initialisieren der Klasseninternen Variablen
	anzahlKaffeesorten = 0;
	KaffeesortenFeld = new Kaffeesorte[100]; //ein array der auf Laenge 100 vorreserviert wird
}//Ende Konstruktor

public void legeKaffeesorteAn(){
	//Ueberpruefung ob es erst 99 Kaffeesorten sind, wenn ja darf eine erstellt werden
	if(anzahlKaffeesorten < 100){
		//Erstellen einer Kaffeesorte durch initialisieren fuer die jeweilige stelle im array
		KaffeesortenFeld[anzahlKaffeesorten] = new Kaffeesorte();
		//und anschliessend erhoehen der Hilfsvariable zum mitzaehlen
		anzahlKaffeesorten++;
	}
	//sonst Fehlermeldung
	else System.out.println("\nMaximale Anzahl Kaffeesorten erreicht!\n");
}//Ende legeKaffeesorteAn

public void aendereKaffeesorte(int x){
	//Uberpruefen ob übergebene Kaffeesortennummer im Sortiment vorhanden ist
	if(x >= 0 && x < anzahlKaffeesorten) KaffeesortenFeld[x].aendern();
	//sonst Fehlermeldung
	else System.out.println("\nNummer nicht vergeben!\n");
}//Ende aendereKaffeesorte

public void zeigeKaffeesortenAn(){
	//Ueberpruefen ob ueberhaupt eine Kaffeesorte vorhanden zum anzeigen
	if(anzahlKaffeesorten > 0){
		System.out.println("\nKaffeesorten im Sortiment:");
		//Schleife zum Aufruf der public Methode ausgabe der Klasse Kaffeesorte 
		//fuer jede einzelne abgespeicherte Kaffeesorte im Array
		for(int i = 0; i < anzahlKaffeesorten; i++){
			KaffeesortenFeld[ i ].ausgabe();
		}
		System.out.println("\n");
	}
	//sonst Fehlermeldung
	else System.out.println("\nNoch keine Kaffeesorten im Sortiment\n");
}//Ende zeigeKaffeesortenAn

}//Ende Klasse KaffeeVerwaltung

besser???


Naja, irgendwie wird bei dem Code, den du eingetragen hast, statt dem [m]<[/m] ein [m]<[/m] angezeigt, statt dem [m]>[/m] ein [m]&rt;[/m], und statt dem [m]&[/m] ein [m]&[/m].
Das sind nun mal HTML-Sonderzeichen.
Hast du den Text 1:1 aus deinem Quellcode hier rein kopiert oder irgendwie versehentlich in HTML umgewandelt?!?

Nachtrag:
Jawohl, besser. Aber das letzte Wort hat natürlich immer noch der Compiler.


frag mich bitte nicht,

auf meinem Editor sieht das nämlich nicht so aus, deswegen ist es mir auch nicht aufgefallen, danke!!!


Warum kriege ich aber nur 0%???


Weil sich der Code aus irgendeinem Grund nicht kompilieren lässt. Und warum das der Fall ist, kannst du ganz einfach rausfinden, indem du deinen Compiler anwirfst und die Fehlermeldungen analysierst.