• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Felder an Java Methode übergeben....

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
ich hab ein kleines Problem, und soll ich für eine Schulaufgabe eine Schueler klasse bauen welche Schueler Objekte anlegt. Und eine Klasse die darauf zugreift... So weit so gut

jetzt bin ich an folgenden Punkt angekommen
Soweit die Schueler klasse...
Code:
public class Schueler {

	String name,vorname;
	int mitte,noteMathe,noteInformatik;
	
	double mittE(int f[], int anzahl){
			for(int i=0;i<anzahl;i++){
				mitte+=f[i];
				}
			mitte/=(1.0*anzahl);
			return 0;
		}
}

und hier die main methode die drauf zugrefit aus der anderen klasse

Code:
public class DV78 {

public static void main(String args[]){
	
	System.out.println("wie viele Schueler moechten sie anlegen");
	int x=Tastatur.leseZahl();
	int Schueler[]=new int[x];
	for(int i=0;i<x;i++){
		Schueler (schul+schueler[i])=new Schueler();
		System.out.println("Geben sie den Nachnamen des Schuelers ein ");
		(schul+schueler[i]).name=Tastatur.leseText();
		System.out.println("Geben sie den Vornamen des Schuelers ein ");
		(schul+schueler[i]).vorname=Tastatur.leseText();
		System.out.println("Geben sie an wieviele Informatik noten sie haben \n(es wird automaitsch ein Durchschnitt ermittelt");
		int N=Tastatur.leseZahl();
		int noteInfo[]=new int[N];
		for (int y =0;y<N;y++){
			noteInfo[y]=Tastatur.leseZahl();
		} 
				(schul+schueler[i]).noteInformatik=(schul+schueler[i]).mittE(noteInfo[], N);
				System.out.println((schul+schueler[i].name)+","+(schul+schueler[i].nachname)+"  Informatik note ="+(schul+schueler[i].noteInformatik));
}}}

so jetzt weiss ich nicht genau wo der fehler liegt aber es könnte dran liegen das ich das feld falsch übergebe an die methode mitte()

das ist die fehler meldung aus dem temrinal

DV78.java:28: '.class' expected
(schul+schueler).noteInformatik=(schul+schueler).mittE(noteInfo[], N);
^
DV78.java:28: ')' expected
(schul+schueler).noteInformatik=(schul+schueler).mittE(noteInfo[], N);
^
2 errors



falls einer ne lösung für das problem grad hat wäre ich sehr dankbar!

gruß Bilbao
 

Alferd

Auralia
Registriert
19.05.05
Beiträge
202
Hmm, sieht mir alles bissle wirr aus.
schul ist gar nicht definiert und manche Klammern stehen recht unmotiviert in der Gegend rum.

Ich hab das mal kurz überarbeitet, wobei es sicher bessere Lösungen gibt und damit es bei mir kompiliert hab ich die Tastatureingaben durch Dummywerte ersetzt:

Code:
public class DV78 {

	public static void main(String args[]) {
		System.out.println("wie viele Schueler moechten sie anlegen");
		int x = 1;
		for (int i = 0; i < x; i++) {
			Schueler temp = new Schueler();
			System.out.println("Geben sie den Nachnamen des Schuelers ein ");
			temp.name = "Mustermann";
			System.out.println("Geben sie den Vornamen des Schuelers ein ");
			temp.vorname = "Max";
			System.out.println("Geben sie an wieviele Informatiknoten sie haben \n(es wird automaitsch ein Durchschnitt ermittelt)");
			int N = 5;
			int noteInfo[] = new int[N];
			for (int y = 0; y < N; y++) {
				noteInfo[y] = 2;
			}
			System.out.println((temp.vorname) + " " + (temp.name)
					+ " Informatiknote = " + (temp.mittE(noteInfo, N)));
		}
	}

Code:
public class Schueler {

	String name, vorname;

	int mitte, noteInformatik;

	float mittE(int f[], int anzahl) {
		for (int i = 0; i < anzahl; i++) {
			mitte += f[i];
		}
		mitte /= (1.0 * anzahl);
		return mitte;
	}
}

edit: Schueler temp = new Schueler(); sollte natürlich besser Schueler schueler = new Schueler(); heißen ...
 

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
ja das problem so ist aber das dann das alte objekt Schueler bei jedem druchgang durch ein neues ersetzt wird deswegen hab ich das auch mit nem feld versucht damit X unterschiedliche objekte angelget werden können...
sinn der übung war nähmlich das die bjekte nach dem anlegen immer noch abruf bar sind...
ausserdem hättest du dann keine klammern um das temp.vorname und so amchen müssen das geht auch ohne (ich hab die nur wegen dem schul+schueler[] gesetzt)
 

Alferd

Auralia
Registriert
19.05.05
Beiträge
202
Dann solltest Du Dir vielleicht einen Array aus Schuelern definieren.
Die Klammern waren zuviel, stimmt. Die hab ich übersehen.
 

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
das hatte ich doch versucht.... und wie mach ich das jetzt richtig?
 

Alferd

Auralia
Registriert
19.05.05
Beiträge
202
Mal ganz allgemein ein Array aus 10 Schuelern:

Code:
Schueler[] schueler = new Schueler[10];
schueler[0].name = "Max";
 

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
ales schön und gut aber die fehler meldungen blieben die gleichen.....


(trotzdem danke für die antowrten ....) ich möcht aber gern wissen was die fehlerbehebt (habs jett geändert aber trotzdem slebe fehlermeldungen
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
Wie sieht denn nun deine aktuelle main-Methode aus?
Denn das im Ursprungsposting hat ja nicht viel mit Java gemein:
Code:
Schueler (schul+schueler[i])=new Schueler();

???
 

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
naja das ist schon java vllt siehts in wenig blöd aus aber damit wollte ich erreichen das ich unterschiedliche objekt namen habe... ergo es ist immer schul plus ein anhängsel den anfangs war dsa ein int wertder dafür stand und wenn man versucht ein String mit nem Int zu addieren sollte eigentlich Stringint draus werden (also wird einfach hinten dran geschireben)...

habs jetzt ein wenig um geschirbeen das problem unten hab ich trotzdem in der sleben reihe...
hab jetzt anstat int felder Schueler felder eht trotzdem nicht..


Code:
public class DV78 {

	public static void main(String args[]){
	
			System.out.println("wie viele Schueler moechten sie anlegen");
			int x=Tastatur.leseZahl();
			for(int i=0;i<x;i++){
				Schueler schul[]=new Schueler[x];
				System.out.println("Geben sie den Nachnamen des Schuelers ein ");
				schul[i].name=Tastatur.leseText();
				System.out.println("Geben sie den Vornamen des Schuelers ein ");
				schul[i].vorname=Tastatur.leseText();
				System.out.println("Geben sie an wieviele Informatik noten sie haben \n(es wird automaitsch ein Durchschnitt ermittelt)");
				int N=Tastatur.leseZahl();
				int noteInfo[]=new int[N];
				for (int y =0;y<N;y++){
					noteInfo[y]=Tastatur.leseZahl();
				} 
				schul[i].noteInformatik=(schul[i].mittE(noteInfo[], N));
				System.out.println(schul[i].name+","+schul[i].nachname+"  Informatik note ="+(schul+schul[i].noteInformatik));
				}
			}
	}
 

Demo

Süssreinette (Aargauer Herrenapfel)
Registriert
02.04.04
Beiträge
411
Verstehe ich das richtig, dass Du dir pro einen Schleifenschritt (i++) jedes mal x Schueler anlegen musst? :oops:

Viel sinnvoller waere doch:

Code:
Schueler[] schueler = new Schueler[10];
for(int i=0;i<x;i++){
  schueler[i] = new Schueler();
  schueler[i].setName(Tastatur.leseText());
  //... weitermachen
}
Wobei die Klasse Schueler in etwa erstmal so aussehen sollte:
Code:
class Schueler{
	
	private String name;
	private int mitte;
	private int noteMathe;
	private int noteInfo;
	
	public Schueler(){};
	
	public void setName(String name){
		this.name = name;
	}
	
	public void setNoteMathe(int note){
		this.noteMathe = note;
	}
	
	public void setNoteInfo(int note){
		this.noteInfo = note;
	}
	
        // Methode von dir uebernommen
	public double mittE(int f[], int anzahl){
		for(int i=0;i<anzahl;i++){
			mitte+=f[i];
		}
		mitte/=(1.0*anzahl);
		return 0;
	}
	
	public String getName(){return this.name;}
}
Ansonsten kann ich deinen Ausfuehrungen nicht so richtig folgen.
 
Zuletzt bearbeitet:

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Hmmm... Da ergeben sich mir ein paar Fragen
  1. Wie lange hast Du schon Informatik?
  2. Hast Du vorher schon mal programmiert?
  3. Macht Dir das Spaß?
  4. Bist Du sicher, daß Du in der Richtung weitermachen willst?
Ich frage nicht, um Dich runterzumachen oder so, sondern weil mir das ganze ziemlich konfus vorkommt. Einiges was Du schreibst hast Du Dir vielleicht nett ausgedacht, hat aber mit dem, was in Programmiersprachen allgemein möglich ist, nicht mal entfernt zu tun.

So. Genug dazu. Ich würde gerne mal die komplette Aufgabenstellung sehen. Ich lerne nämlich zur Zeit auch Java. Naja.... Ich versuche mich an Java zu gewöhnen und würde mich auch mal gerne daran versuchen.
 

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
1 seit nem halben jahr
2. siehe 1.
3. normalerweise schon
4. und ja....

(anmerken wollt ich noch das das OOP erst seit 6 Unterrichtsstunden hatten... davor haben wir ohne objekte gearbeitet)


vllt bin ich auch falschan an das problem rangegangen...

Also die aufgabe bestand darin eine klasse schueler zu machen welche Schueler objekte erstellt. (die ja soweit fertig ist und funktioniert wenn ich die ganzen schleifen etc. rauslasse und nur Objekte erstmal erstelle)
Dann soll mit einer andern Klasse, der user eingeben wie viele Schueler er erstellen will, Dann nach einander für einen Schueler den Namen Vornamen etc.. eingeben (und halt auch noten... ) und am ende ausgegeben...

dabei soll uzmbeispiel möglichkeit das der user eingibt wie viele Info noten er zumbeispiel hat damit dann die Durchschnitts note errechnet werden kann..

Erstes problem war wie schaffe ich es X viele Schueler anzulegen
zweites problem war /ist wenn ich ein feld voller noten hab (wegen der durchschnittsmethode) wie übergebe ich sie.

deswegen auch die vllt so umständliche programmierung aber mir ist nichts besseres eingefallen....


@Demo :
Ja stimmt da bin ich in der zeile verrutscht geht aber trotzdem nicht...
Aussrdem muss (laut meines Lehrers..) ich nicht unbedingt this.name=name; machen das geht so wie das mach auch ... (eigentlich) aber das ist ja nicht das problem ich hab nur ein problem in der letzten zeile bei der ausgabe der werte....
 
Zuletzt bearbeitet:

Demo

Süssreinette (Aargauer Herrenapfel)
Registriert
02.04.04
Beiträge
411
Bei nochmaligen Hinsehen wuerde ich die Durchschnittsnote (die Note in Informatik) gleich in der Klasse Schueler machen (den Algorithmus hab ich nicht ueberprueft), die Anzahl der Noten zu uebergeben ist eigentlich auch nicht notwendig.

Code:
public double mittE(int[] f){
		int mitte = 0;
		for(int i=0;i<f.length;i++){
			mitte+=f[i];
		}
		mitte/=(1.0*f.length);
		return mitte;
}

Damit kannst Du dir leicht dein for-Schelife in main() ueberlegen:
Code:
Schueler[] schueler = new Schueler[10];
for(int i=0;i<x;i++){
  schueler[i] = new Schueler();
  schueler[i].setName(Tastatur.leseText());
  //Wieviel Noten
  int[] noten = new int[N];
  for(int j=0;j<n;j++){
    noten[j] = tastatur.lesezeichen();
  }
  // den Spass fuer den Schueler ausgeben
  System.out.println("Name: " + schueler[i].getName() + "\tVorname: " + schueler[i].getVorname() + "\tInfoNote: " + schueler[i].mittE(noten)); 
}

Nur als Vorschlag. Ausarbeitung ist dir ueberlassen.

Edit:

Wenn Du die InfoNote seperat haben willst, ginge aber auch das:

Code:
//in Schueler
public void mittE(int[] f){
		int mitte = 0;
		for(int i=0;i<f.length;i++){
			mitte+=f[i];
		}
		mitte/=(1.0*f.length);
		this.noteInfo = mitte;
}

In der main() muesstest Du das dann noch explizit aufrufen:
Code:
// Noteneinleseung (for-Schleife) abgeschlossen
schueler[i].mittE(noten);
//Ausgeben
System.out.println("Name: " + schueler[i].getName() + "\tVorname: " + schueler[i].getVorname() + "\tInfoNote: " + schueler[i].getInfoNote());

Uebrigens ist das this eigentlich nur Stil, kann man weglassen. Was this bewirkt, findest Du in dem von Dir empfohlenen Buch "Java ist auch eine Insel".

(anmerken wollt ich noch das das OOP erst seit 6 Unterrichtsstunden hatten... davor haben wir ohne objekte gearbeitet)
Dann beschaeftige dich mit dem Thema mal ausserhalb des Unterrichts. Ohne wird in Java nix gehen...
 
Zuletzt bearbeitet:

Bilbao

Wohlschmecker aus Vierlanden
Registriert
25.01.06
Beiträge
238
was mach ich denn grad, denn die aufgabe war nur zum spaß vom lehrer gegeben genau so wie eine Bruchrechnungs klasse erstellen (weche aber komplett funtz (obwohl ich sie geschierben hab:D))

hmm kante this nur als pointer.. dachte net das er ne funktion hat (ausser angeben in wo mein objekt im speicher steck...)
 

Alferd

Auralia
Registriert
19.05.05
Beiträge
202
In Beitrag #9 hast Du wieder stehen: "schul+schul.noteInformatik"
schul ist aber nirgends definiert. Wenn das ein String sein soll, musst Du Anführungszeichen setzen: ""schul"+schul.noteInformatik"
Allerdings verkompliziert dieser String Deinen Code nur. Lass ihn weg.
Zieh die Definition des Arrays vor die Schleife und füll den Array in der Schleife, dann sollte das gehen.
 

devylon

Idared
Registriert
15.06.07
Beiträge
26
Hi,

hast du deine Java-Programm inzw. hinbekommen oder brauchst du noch Unterstützung ?

Grüsse,
devylon