• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Java Anfänger --- Frage zu den Klassen

messia04

Prinzenapfel
Registriert
30.06.04
Beiträge
544
hi.
Ich habe es dieses Semester mit Programmieren angefangen und habe noch startschwierigkeiten. Undzwar kommt bei meinem folgenden Code eine Fehlermeldung, dass die method setAdresse nicht gelsesen werden kann. Ob der Zugriff auf die Methode im allg. unmöglich ist, oder ich es einfach falsch geschrieben habe:

Zum Programm:
Es soll soeine Art Kundendatenbank erstellt werden. Dazu hat man jeweils die Daten des Kunden (Name, Kundennr.,Gesch.Adresse,Priv.Adresse und alle gespeicherten Bestellungen). Wobei es aus verschachtelten Klassen und Arrays bestehen soll.

Die Bestellungen habe ich im moment noch weggelassen


Für Tipps oder Ratschläge wäre ich dankbar... :-D

Code:
class Bestellungen{
	int menge,artnr,artpreis;
	
	Bestellungen(int artnr,int menge,int artpreis){
	this.menge=menge;
	this.artnr=artnr;
	this.artpreis=artpreis;
	}
}

class Adresse{
	int hausnr,plz;
	String strasse,ort;
	
	Adresse(String str,int hausnr,int plz,String ort){
	this.strasse=str;
	this.ort=ort;
	this.hausnr=hausnr;
	this.plz=plz;
	}
}


class Kunde{
	String name;
	int knr;
	Adresse privat,geschaft;
	Bestellungen[] einkauf;

	Kunde(String name,int knr){
	this.name=name;
	this.knr=knr;
	this.privat=setAdresse();
	this.geschaft=setAdresse();
	this.einkauf=new Bestellungen[100];
	}
}




class Kundenverwaltung{


public static Adresse setAdresse(){
	
	String tr=new String();
	String trrrr=new String();
	int trr=0;
	int trrr=0;
	Out.println("Bitte geben Sie nacheinander Strasse,Hausnummer,PLZ und Ort ein: ");
	tr=In.readLine();
	trr=In.readInt();
	trrr=In.readInt();
	trrrr=In.readLine();
	Adresse fertig=new Adresse(tr,trr,trrr,trrrr);
	return fertig;
  }


	

  public static void newcustomer(int knummer){

	String neu=new String();
	Out.print("Name: ");
	neu=In.readLine();
	catalog[knummer]=new Kunde(neu,knummer);
	knr++;
  }

        static Kunde[] catalog;
	static int knr=0;

//  static Kunde search(String name){...}
//  static void mod(String name){...}




  public static void main(String[] args){
	
	int auswahl=0;
	String s=new String();
	catalog = new Kunde[100];

	Out.println("\n**************Willkommen in unserer Kundendatenbank*******************");
	Out.println("\nWas möchten Sie gerne tun?");
	Out.println("\n1 = neuen Kunden hinzufuegen\n2 = Kunden suchen (und evtl. modifizieren)");
	auswahl=In.readInt();
	
	switch(auswahl){
	  case 1: newcustomer(knr); break;
//	  case 2: Out.print("Bitte geben sie einen Namen ein: ");
//		  s=In.readLine();
//		  search(s);
//		  break;
	  default: Out.println("Ungueltige Eingabe");
 	}
  }
}
 

svn

Prinzenapfel
Registriert
20.01.06
Beiträge
553
Der Code dürfte im allgemeinen nicht gehen. Da es zB nicht out.println heisst sondern System.out.println
Das selbe für System.in.read();
Und die Exeption also der try/catch Block fehlt...

Zu deinem eigentlichen Fehler.
Wenn du die Methode
this.privat = setAdresse();
benutzten willst MUSS sie auch in der jeweiligen Klasse vorhanden sein.
Oder du benutzt ein Objekt der Klasse in der sich setAdresse befindet.
Da du die Methode allerdings static gemacht hast musst du auch genau angeben wo die Methode liegt.
Ergo:
this.privat = Kundenverwaltung.setAdresse();
 

slayercon

Meraner
Registriert
17.01.05
Beiträge
231
Benutzt du zufällig das Buch "Sprechen sie Java" ??? Wenn ja und wenn du die (vorgeschlagenen) Klassen für die Ausgabe benutzt dann stimmt das Out.println() allerdings musst du sie dann über Import zugänglich machen wenn nicht dann hat svn recht.

lg s.
 

messia04

Prinzenapfel
Registriert
30.06.04
Beiträge
544
svn schrieb:
Zu deinem eigentlichen Fehler.
Wenn du die Methode
this.privat = setAdresse();
benutzten willst MUSS sie auch in der jeweiligen Klasse vorhanden sein.
Oder du benutzt ein Objekt der Klasse in der sich setAdresse befindet.
Da du die Methode allerdings static gemacht hast musst du auch genau angeben wo die Methode liegt.
Ergo:
this.privat = Kundenverwaltung.setAdresse();

Danke, habe es korrigiert. Läuft jetzt einwandfrei...

slayercon schrieb:
Benutzt du zufällig das Buch "Sprechen sie Java" ??? Wenn ja und wenn du die (vorgeschlagenen) Klassen für die Ausgabe benutzt dann stimmt das Out.println() allerdings musst du sie dann über Import zugänglich machen wenn nicht dann hat svn recht.

lg s.

Ja, ich benutze auch "Sprechen Sie Java?". Unddie IN bzw OUT habe ich importiert. Also die Befehle sind schon richtig. Bzw. Derfehler wurde ja schon gefunden.

Danke :-D


@slayercon: Hey, wenn du auch Sprechen Sie Java benutzt, wie importiere ich meine In/Out Klassen ins Programm uEdit??
 

slayercon

Meraner
Registriert
17.01.05
Beiträge
231
Etwas späte Antwort...

Heute brauch ich das Buch nicht mehr :) dunkle Erinnerungen an meinen Java Einstieg werden wach.... Ich kenn uEdit zwar nicht aber nehme mal an das du sie einfach zum Klassenpfad/Buildpath der IDE/Editor hinzufügen musst.

lg S.