-
03.05.11 19:26 #1
- Registriert seit
- May 2011
- Beiträge
- 6
Ich weiß, dass main() static ist und daher kann ich ja folglich keine nicht-statischen Methoden direkt aus der Instanz dieser Klasse in der sich auch main befindet, aufrufen.
Das ganze ist allerdings auch noch ein bisschen komplizierter. Im Grunde will ich eine Methode aufrufen, die in einem Objekt definiert ist.
Dieses Objekt steckt allerdings wiederum in einem Array voller dieser Objekte.
Das Array mit den Objekten wird durch ein weiteres Objekt initiiert, das nur für diesen Zweck erschaffen wurde.
Schön und gut, also 2 neue Klassen, die eine instanzieren, Methoden durch Punktoperator aufrufen und... cannot find symbol - variable Arrayname.
Leider bin ich kein Java Guru, habe Java zuletzt vor einem Jahr genutzt und zu allem überfluss will mein Lehrer nicht das man statische Methoden benutzt weil wir das noch nicht hatten.
Mist, also hier ist wie ich das ganze aufgeschrieben habe:
//Objekt1
// code...
Objekt2[] Arrayname = new Objekt2[Objektanzahl];
// noch mehr code...
und in main() siehts dann so aus:
//Hauptobjekt
//ganz viel bla
Arrayname[objektnummer].beispielmethode ;
//nochmal viel bla
einer ne Idee was man machen könnte? Ich vermute ja einen Grundlegenden Fehler, so offensichtlich dass ichs erst recht nicht entdecke
-
03.05.11 21:57 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
Du solltest dir mal grundlegende Java-Kenntnisse aneignen, z.B. mit Hilfe der Javainsel: http://openbook.galileocomputing.de/...index.htm#_top
Außerdem wäre es wirklich hilfreich, wenn du deine Code auch in Code-Tags packst, dann lässt er sich leichter lesen (siehe meine Signatur).
Nun zu deinem Problem:
Du kannst aus einer statischen Methode heraus sehr wohl nicht-statische Methoden aufrufen. Du musst dafür nur ein Objekt erzeugen (oder dir irgendwie anders Zugriff auf ein Objekt beschaffen). Schematisch:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public class Starter { Starter(){// Das hier ist der Constructor // hier eingefügter Code wird beim Erstellen eines Objekts von "Starter" ausgeführt. } public static void main(String[] args){ // hier beginnt die Ausführung deines Programmes Starter s = new Starter(); // erzeuge eine Instanz der Klasse "Starter" (=Objekt) s.start(); // hier kannst du problemlos eine nicht-statische Methode aufrufen // Vorraussetzung: du brauchst eine Referenz auf das Objekt, z.B. indem du es erzeugst } private void start(){ // ... } } }
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Und so als Tipp nebenbei Variablennamen schreibt man klein

Die Loesung hat dir genodeftest ja schon gegebenWaere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
04.05.11 09:05 #4SE Tutorials.de Gastzugang
Am einfachsten ist es wenn du in der main() eine sog. Selbstinstanzierung machst. Also so
Dadurch erreichst du das du dann ab dem Konstruktor nicht mehr STATIC bist ... und kannst desshalb dann schon auf "this" zugreifen. Ich mache es immer so das ich den Konstruktor private mache damit man die Klasse nicht von externen Klassen aus instanzieren kann und verarbeite dann im Konstruktor erstmal das übergebene String-Array. Die dann aufgerufene Methode ist dann mein eigentlicher Programmstart und wird von mir meist auch private gehalten um den "Einstiegspunkt" nach außen hin zu verstecken. Generell ist bei mir eigentlich alles private. Objekte oder Methoden die ich innerhalb des Package verwende natürlich protected. Die einzige ausnahme bilded mein Plug-In-System in dem zum Zugriff über reflections die nötigen Methoden der Einfachheit halber public sind da ich mit java.lang.reflect.AccessibleObject.setAccessible(boolean) irgendwie Probleme habe. Aber wie gesagt ... das ist die einzige Ausnahme in meinem sonst sehr strengen private/protected-Konzept.
-
Was im Grunde das selbe ist wie von genodeftest
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
04.05.11 10:40 #6SE Tutorials.de Gastzugang
Ähm ... shame on me ...
Ja natürlich ... ey ich sollte langsam anfangen fremde Codes auch mal verstehen zu wollen ...
*keinen weiteren Kommentar*
-
08.05.11 02:13 #7
- Registriert seit
- May 2011
- Beiträge
- 6
Tschuldigung, dass ich mich so missverständlich ausgedrückt habe und zu allem überfluss nicht die Code Tags genutzt habe.
War ein wenig in Eile(ist aber auch egal)...
soo erstmal @genodeftest
Ich weiß, dass main() static ist und daher kann ich ja folglich keine nicht-statischen Methoden direkt aus der Instanz dieser Klasse in der sich auch main befindet, aufrufen.Hmm, ich meine eigentlich das gleiche... Ich kann aber keine nicht-statische Methode aus der Klasse aufrufen in der sich auch main() befindet. Dazu brauche ich (wie du ja auch richtig sagst) ein anderes Objekt das diese Methode beinhaltet.Du kannst aus einer statischen Methode heraus sehr wohl nicht-statische Methoden aufrufen. Du musst dafür nur ein Objekt erzeugen (oder dir irgendwie anders Zugriff auf ein Objekt beschaffen).
Wenn main() gar keine Methode aufrufen könnte, könnte man in Java schließlich auch nicht programmieren
(oder halt nur prozedual, was wiederum den Sinn von Java verfehlt).
Soo, weiter: ich weiß wie man Variablennamer schreibt(klein)
Bevor ich hier rede und rede und sage was ich gemacht habe und was nicht schaut euch das ganze einfach an.
Code :1 2 3 4 5 6 7 8 9 10 11
public class Hundeapp{ public static void main(String[] args){ Wurfmaschine W1 = new Wurfmaschine(); W1.sethundeanzahl(); W1.Hundeerstellen(); for(int schleife=0;schleife<W1.gethundeanzahl(); schleife++){ Hunde[schleife].bellen(); Hunde[schleife].eigenschaften(); } } }Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
import javax.swing.*; public class Wurfmaschine{ private int hundeanzahl; public void Hundeerstellen(){ //Erstelle Hundeobjekte for(int i=0;i<hundeanzahl;i++){ Hund[] Hunde = new Hund[hundeanzahl]; // Achtung: "Hunde" ist das Array der ganzen "Hund" Objekte! // ja, this ist nicht notwendig, ich weiß... Hunde[i].setgröße(this.randomgröße()); Hunde[i].setrasse(this.randomrasse()); Hunde[i].setname(this.randomname()); Hunde[i].setgewicht(this.randomgewicht()); Hunde[i].setanzahlbellen(this.randomanzahlbellen()); Hunde[i].setlaut(this.randomlaut()); } } public void sethundeanzahl() { //Exeptions wären hier unbedingt angebracht!! String hundeanzahlstring = JOptionPane.showInputDialog( "Wieviele Hunde sollen geworfen werden?"); this.hundeanzahl=Integer.parseInt(hundeanzahlstring); } private double randomgröße(){ return Math.random()*120; } private double randomgewicht(){ return Math.random()*60; } private String randomrasse(){ String[] rassen= {"Dalmatiner","Fußhupe","Deutscher Schäferhund","vom Mars","Hax0r"}; return rassen[(int)Math.random()*rassen.length]; } private String randomname(){ String[] namen= {"Harry","Plokro","Ytsori","Rex","zufig","1337"}; return namen[(int)Math.random()*namen.length]; } private int randomanzahlbellen(){ return (int)Math.random()*5; } private String randomlaut(){ String[] laute= {"pfuuf","Wuff","Wau","Pasdouf","1337"}; return laute[(int)Math.random()*laute.length]; } public int gethundeanzahl(){ return hundeanzahl; } }Code :1 2 3
class Hund{ //ist eigentlich total unwichtig... es enthält alles und läuft ohne Array ganz normal. }
Der Fehler liegt hier wie gesagt darin, dass er das Objekt im Array nicht anspricht und mir einfach nur sagt:
"cannot find symbol - variable Hund"
Klasse Hundeapp Zeile 7 (8 wird dann ja auch falsch sein)
Also, es wird ein Objekt der Klasse Wurfmaschine instanziert, dann wird aus der Instanz die Methode Hundeerstellen() aufgerufen. Diese macht ihren Dienst auch wie sie sollte. Nur in main() kommt dann die Aufrufung einer Methode in einem Objekt der Klasse Hund, welches sich dann im Array Hunde[] befindet. Und genau dort im Schlussteil läuft es nicht. Ganz simpel sollte man meinen. Dennoch kann ich es nicht.
Schonmal Danke für die schnelle Antwort und Beratung aber auch schonmal danke für kommende Hilfe
ps: Wenn nochmal jemand etwas wegen nichteingehaltenen Konventionen sagt, dann lasst euch gesagt sein, dieses Beispielprogramm für meinen Infolehrer ist nicht SOOooo wichtig,
im ernst...
D
Danke
-
Hallo,
ich sehe in Deinem Code keine Variable, (e.g. Array) die Hunde beinhaltet, in der "Wurfmaschine" (lol) also deutet der Fehler ("cannot find symbol - variable Hund") darauf hin, dass keine Variable mit Namen "Hund" erstellt wurde! (wobei glaub ich Hunde gemeint ist, sonst wäre es ja Dein Klassenname)
Sieh Dir mal folgenden Code an:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14
public class Hundeapp{ public static void main(String[] args){ Wurfmaschine W1 = new Wurfmaschine(); W1.sethundeanzahl(); W1.Hundeerstellen(); Hund[] hundeArray = W1.getHundeArray(); for(int schleife=0;schleife<W1.gethundeanzahl(); schleife++) { hundeArray [schleife].bellen(); hundeArray [schleife].eigenschaften(); } } }
dazu musst Du die erstellten Hunde in einer lokalen Variable in der Klasse Hund "Containern" also irgendwo speichern.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
import javax.swing.*; public class Wurfmaschine{ private int hundeanzahl; private Hund[] hundeArray = null; public void Hundeerstellen(){ //Erstelle Hundeobjekte Hund[] Hunde = new Hund[hundeanzahl]; // Achtung: "Hunde" ist das Array der ganzen "Hund" Objekte! for(int i=0;i<hundeanzahl; // ja, this ist nicht notwendig, ich weiß... Hunde[i].setgröße(this.randomgröße()); Hunde[i].setrasse(this.randomrasse()); Hunde[i].setname(this.randomname()); Hunde[i].setgewicht(this.randomgewicht()); Hunde[i].setanzahlbellen(this.randomanzahlbellen()); Hunde[i].setlaut(this.randomlaut()); } hundeArray = Hunde; } public void sethundeanzahl() { //Exeptions wären hier unbedingt angebracht!! String hundeanzahlstring = JOptionPane.showInputDialog( "Wieviele Hunde sollen geworfen werden?"); this.hundeanzahl=Integer.parseInt(hundeanzahlstring); } private double randomgröße(){ return Math.random()*120; } private double randomgewicht(){ return Math.random()*60; } private String randomrasse(){ String[] rassen= {"Dalmatiner","Fußhupe","Deutscher Schäferhund","vom Mars","Hax0r"}; return rassen[(int)Math.random()*rassen.length]; } private String randomname(){ String[] namen= {"Harry","Plokro","Ytsori","Rex","zufig","1337"}; return namen[(int)Math.random()*namen.length]; } private int randomanzahlbellen(){ return (int)Math.random()*5; } private String randomlaut(){ String[] laute= {"pfuuf","Wuff","Wau","Pasdouf","1337"}; return laute[(int)Math.random()*laute.length]; } public int gethundeanzahl(){ return hundeanzahl; } public Hund[] getHundeArray(){ return hundeArray; } }
und vergiss bitte nicht, das Array in hundeErstellen ausserhalb der Schleife zu erstellen, denn sonst ist es immer nur mit einem Hund befüllt!
Viele GrüßeGeändert von VScan (08.05.11 um 03:47 Uhr)
„Jeder Fehler erscheint unglaublich dumm, wenn Andere ihn begehen.“
Georg Christoph Lichtenberg
Netiquette (vA §15)
Codetags/Codeboxen
Sehr gut gelöste Beiträge bitte mit einem "Danke" abschließen, danke :D
-
08.05.11 13:44 #9
- Registriert seit
- May 2011
- Beiträge
- 6
@VScan
Danke für die Antwort und ja, klar, die Fehlermeldung spricht von "Hunde" nicht von "Hund".
Ich verstehe nur nicht ganz wieso ich nicht gleich das Array Hunde nutzen kann und noch das Array HundeArray erstellen sollte. erscheint mir redundant.
Ich erstelle ja per
ein Array mit genausovielen Hunden drinne wie ich in hundeanzahl angegeben habe. Wozu jetzt nochmal ein Array? Und wieso kann ich das nicht in Hundeapp.main() ansprechen?Code java:1
Hund[] Hunde = new Hund[hundeanzahl];
Funktioniert das nicht weil ich das Array in Objekt W1 erstellt habe und das so nicht sichtbar in Hundeapp ist? Muss ich deshalb mir NOCH ein Array erstellen und über den getter das eine Array in das andere packen?
(so wie du es mit
gemacht hast?)Code java:1
Hund[] hundeArray = W1.getHundeArray();
Würde zwar Sinn ergeben, ist aber ist doch ziemlich umständlich, oder?
-
08.05.11 14:09 #10SE Tutorials.de Gastzugang
Aua ... 2 ganz böse Fehler in deinem Source
1) das Array Hund[] hunde *wirklich ... hier solltest du dich nach der Konvetion richten da beim vergessen des "e" ganz schnell zu extrem langen Error-Meldungen führen kann obwohl es nur an einem Buchstaben liegt* INNERHALB der for() erstellen resultiert in drei Problemen
a) Hund[] hunde ist außerhalb der for() garnicht bekannt
b) Hund[] hunde enthält maximal EIN Objekt
c) Wenn die for() durchgelaufen ist wird Hund[] hunde vom GC wieder aufgeräumt.
Hier also wirklich auf VScan hören und das Array AUßERHALB der for() erstellen.
2) Du versuchst in HundeApp auf ein protected-Objekt in Wurfmaschine zuzugreifen. So lange beide Klassen im selben Package sind ist das auch kein Problem. Aber woher soll HundeApp denn bitte Hund[] w1.hunde kennen wenn du nur auf Hund[] hunde zugreifen willst ? Denn das exisitiert in HundeApp so nicht ... nur w1.hunde ... und auch nur dann wenn du es außerhalb der for() erstellst ... ansonsten kennt nicht mal Wurfmaschine selbst diese Objekt.
Und noch als kleine Anmerkung : Natürlich kannst du auch auf NONE-STATIC - Methode der Klasse zugreifen in der es eine public static void main(String[]) gibt ... nur musst du in der main ein Objekt dieser Klasse erzeugen und dann damit arbeiten.
Ich glaube dir fehlen hier noch einige Grundlagen die dir dein Info-Lehrer entweder noch nicht vermittelt hat oder die du nicht richtig verstanden hast. Lasse dir deine Fehler am beesten mal von deinem Info-Lehrer erklären da du unsere Erklärungen ja scheinbar auch nicht verstehst.
-
08.05.11 15:19 #11
- Registriert seit
- May 2011
- Beiträge
- 6
Moment mal... jetzt hab ich auch mal was zu sagen...
Ja, Dummerweise habe ich das Array Hunde in der for schleife erstellt. Ist aber längst kein Thema mehr, da es nun außerhalb steht. Darauf hatte mich aber auch schon VScan aufmerksam gemacht. Dieser Fehler liegt aber nicht daran dass ich GAR keine Ahnung habe, sondern mich einfach vertan habe. Soll ja vorkommen können.
Zu deiner Anmerkung, über Selbstinstanzierungen weiß ich bescheid. ABER: Man kann nicht in der Instanz in der main() läuft, auf Methoden in der selben Klasse zugreifen. Dazu muss ich immer noch EIN OBJEKT ERSTELLEN. Und da kann ich dann auch eins der Klasse erstellen, in der auch main() ist. Ist ja ab dem Zeitpunkt Wurst. Objekt ist Objekt. Ja, was sagst du denn, was ich nicht sag? Immer diese Missverständnisse....
Es ist nicht so, dass ich kein Java generell kann, die Grundlagen konnte ich, hab nur die letzte Zeit eher mich mit c++ beschäftigt und nun fängt unser Infolehrer mit Java an, weil er meint, das wir das bräuchten und das immer und überall und so weiter und sofort.(Nicht das Java schlecht wäre, Gott bewahre..)
So, und was du unter 2) schreibst verstehe ich teilweise nicht. Was willst du mir damit sagen?
Wenn du
schreiben willst, das läuft nicht.Code java:1
W1.Hunde[schleife].bellen();
Übrigens, ich habe alles was VScan schreibt verstanden, da einleuchtend. Jedoch erscheint mir das eine Array überflüssig, weshalb ich nach einer eleganteren Lösung suche. Es sei denn es gibt keine.
@SPiKEe Da ich wusste, dass das ganze auf ein problem mit meinen halb verdängten Java-Grundlagen zurückkommen wird, hab ich ja extra den ganzen Thread in "Java-Grundlagen" erstellt.
Nochmal... warum kann ich nicht das Array Hunde in main() ansprechen? und wenn ich es kann, wie? (wenn nicht, warum nicht)
Danke aber für die Lösung mit dem "HundeArray", das läuft (natürlich nur mit Hunde außerhalb der for-schleife)
Geändert von Themanofrofl (08.05.11 um 15:29 Uhr)
-
08.05.11 17:23 #12SE Tutorials.de Gastzugang
Lustiger weise liegt hier das Missverständnis bei DIR.
Guck dir doch oben mal unsere Beispiele zur Selbstinstanzierung an ... man kann sehr wohl auf NICHT-STATISCHE-Methoden aus der MAIN-Instanz zugreifen ... WEIL : Was genau denkst du denn wäre die MAIN-Instanz ... es ist nämlich genau die Instanz die du in deinem Beispiel auch verwendest ... davon abgesehen das du das ganze auch noch prozedual und nicht objekt-orientiert geschrieben hast.
Das w1.hunde[index] nicht funktioniert ist klar ... aber das solltest du aus deinen Programmiererfahrungen von denen du hier schwärmst wissen ...
Denn Hund[] hunde ist eine Member-Variable von public void Hundeerstellen(). Damit du nun von außen auf hunde zugreifen kannst musst du es erstmal zu einer Klassen-Variablen machen ... und zwar in dem du die Deklaration außerhalb von public void Hundeerstellen() schreibst. Wenn du jetzt wirklich nicht weist wie ich das meine dann frage deinen Info-Lehrer bitte vorher erstmal über den Aufbau von Klassen aus ... weil ich glaube diese wirklich einfach Grundlage sollte er dir bis jetzt vermittelt haben. Und wenn nicht hilft Google da ein ganzes stück weiter ... dafür muss sich hier keiner von uns Zeit an dir verschwenden ... das machst du bitte selbst wenn du wirklich gewillt bist zu lernen.
Was deine Meinung zum zweiten "überflüssigen" Array angeht geb ich dir recht. Weil so erhälts du nur eine Kopie des Arrays. Wenn sich das original also ändert bekommst du das in der Kopie schon nicht mehr mit ... darum solltest du OOP-mäßig auch über eine Referenz mit dem Original arbeiten.
@generic
Es ist echt immer wieder traurig wie Anfänger hier her kommen , mit ihren Programmiererfahrungen pralen und meinen nur von Java speziell noch nicht so viel Ahnung zu haben. Sind denn andere Sprachen wirklich so anders als Java ? Ich wette nicht. Zumindest die pupolären Sprachen weisen in solchen Punkten gemeinsamkeiten mit Java auf.
-
08.05.11 18:56 #13
- Registriert seit
- May 2011
- Beiträge
- 6
Verdammte Axt, jetzt reicht es aber mal langsam, ja?
Habe ich gesagt ich kenne mich in Java gut aus? nein. Hab ich gesagt, dass ich mir mal gewisse Java Grundlagen angeeignet HATTE? ja.
Dass ich mich mit C++ beschäftigt habe heißt doch auch nicht, dass ich dort ein Meister meiner Kunst bin, oder?, denn das bin ich garantiert nicht. Prahlen tut man doch auch nicht, wenn man eingesteht, dass man den Großteil wieder vergessen hat, oder? Und überhaupt, wieso eigentlich so unfreundlich?
Die ganze main-geschichte ist doch eigentlich vollkommen unwichtig. Auch wenn ich immernoch der Meinung bin, dass du schon wieder das gleiche schreibst wie ich. Du hast doch in deinem eigenen Beispiel am Anfang die Klasse mit main instanziert. Also ein Objekt erstellt. In diesem Objekt hast du dann deine Nicht-statische Methode aufgerufen. Aber du musstest ersteinmal dieses Objekt erstellen. Ohne ein Objekt, eine neue Instanz kann ich aus der statischen Methode main auf keine Methode in ihrer Klasse zugreifen, die nicht-statisch ist. Oder auch:
Ich lasse mich hier weder zum Vollidioten noch Großmaul abstempeln.(sehr ungern)Static methods can only call other static methods in their class (or they need to use an explicit object for the call)
Tut mir leid, dass ich deinen vorherigen post nicht ganz verstanden habe, aber darum muss man noch lange nicht so abwertend werden.
Es ging mir nur um diesen Fehler den ich gerne beheben möchte. Dass das ganze nicht schön ist und auf jeden Fall besser ginge ist mir auch klar. Darum geht es aber auch gar nicht.
Fehlermeldung und meine Unwissenheit über "wie rufe ich das ganze denn richtig aus main() auf?" haben mich zu diesem Thread gebracht.
Und übrigens: Danke für die dennoch enthaltenen Infos in deinem Post. Habe jetzt Hunde gleich in der Klasse deklariert und die main entsprechend angepasst. läuft.
*Zähneknirschendes Danke*Geändert von Themanofrofl (08.05.11 um 19:27 Uhr)
-
Hallo,
vielleicht solltet Ihr beide mal einen Gang zurück schalten, dass er keine Erfahrung hat, ist klar... aber man kann bei diesem primitiven Beispiel eine Ausnahme machen, da es ja unter Grundlagen steht und nicht sehr viel Aufwand erzeugt, bei aufwendigeren Arbeiten würde ich auch sagen, erstmal folgendes studieren: http://openbook.galileocomputing.de/...6c9c510503f310
(Laut SPiKEe ausgebessert..
Da es in Java keine Pointer oder Referenzen (zumindest bei primitiven Typen) gibt, kann man ja den Array wie SPiKEe beschrieben hat anders modifizieren (Thema: Zugriffsmodifizierer), z.B. mit "Public", somit muss man den Array nicht nochmal erstellen.
Das sieht dann wie folgt aus:
Hundeapp:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
public class HundeApp { public static void main(String[] args) { Wurfmaschine W1 = new Wurfmaschine(); W1.sethundeanzahl(); W1.Hundeerstellen(); for(int schleife = 0; schleife < W1.gethundeanzahl(); schleife++) { W1.hundeArray[schleife].bellen(); W1.hundeArray[schleife].eigenschaften(); } } }
dann hier noch die Wurfmaschine:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
import javax.swing.*; public class Wurfmaschine { private int hundeanzahl; /* * würde eine ArrayList mit der Thematik <generic> bevorzugen, da es * leichter zu handhaben ist, aber das ist eine Fleißarbeit :) siehe * "Java ist auch eine Insel" */ public Hund[] hundeArray = null; public void Hundeerstellen() { // array erstellen hundeArray = new Hund[hundeanzahl]; // hund initiieren Hund hu = null; for (int i = 0; i < hundeanzahl; i++) { // hund instanzieren hu = new Hund(); hu.setgröße(this.randomgröße()); hu.setrasse(this.randomrasse()); hu.setname(this.randomname()); hu.setgewicht(this.randomgewicht()); hu.setanzahlbellen(this.randomanzahlbellen()); hu.setlaut(this.randomlaut()); hundeArray[i] = hu; } } public void sethundeanzahl() { String hundeanzahlstring = JOptionPane .showInputDialog("Wieviele Hunde sollen geworfen werden?"); this.hundeanzahl = Integer.parseInt(hundeanzahlstring); } private double randomgröße() { return Math.random() * 120; } private double randomgewicht() { return Math.random() * 60; } private String randomrasse() { String[] rassen = { "Dalmatiner", "Fußhupe", "Deutscher Schäferhund", "vom Mars", "Hax0r" }; return rassen[(int) Math.random() * rassen.length]; } private String randomname() { String[] namen = { "Harry", "Plokro", "Ytsori", "Rex", "zufig", "1337" }; return namen[(int) Math.random() * namen.length]; } private int randomanzahlbellen() { return (int) Math.random() * 5; } private String randomlaut() { String[] laute = { "pfuuf", "Wuff", "Wau", "Pasdouf", "1337" }; return laute[(int) Math.random() * laute.length]; } public int gethundeanzahl() { return hundeanzahl; } public Hund[] getHundeArray() { return hundeArray; } }
Ich glaube im übrigen auch, dass etwas mehr lesen, z.B. im oben genannten Link, viel helfen würde, ohne dir zu nahe zu treten, wäre es auch angebracht!
Viele GrüßeGeändert von VScan (08.05.11 um 20:51 Uhr)
„Jeder Fehler erscheint unglaublich dumm, wenn Andere ihn begehen.“
Georg Christoph Lichtenberg
Netiquette (vA §15)
Codetags/Codeboxen
Sehr gut gelöste Beiträge bitte mit einem "Danke" abschließen, danke :D
-
08.05.11 20:43 #15SE Tutorials.de Gastzugang
@VScan
Du weist aber schon das es die JavaInsel mitlerweile in Version 9 gibt oder ? Wäre zumindest etwas aktueller und beschreibt auch einige Veränderungen in den neueren Versionen von Java.
Auf das offizielle Release von Java7 und einer dazu passendne JavaInsel warte allerdings auch ich schon recht lange.
Ähnliche Themen
-
Aus einer öffentlichen Methode eine weitere öffentliche Methode aufrufen
Von BlubBlub im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 11.04.11, 10:48 -
Parameter und die Main Methode
Von der Prof im Forum JavaAntworten: 1Letzter Beitrag: 31.01.08, 11:09 -
Vor Aufruf einer bestimmten Methode immer erst eine andere Methode aufrufen
Von lernen.2007 im Forum JavaAntworten: 2Letzter Beitrag: 06.06.07, 18:37 -
main-Methode
Von snatch im Forum JavaAntworten: 3Letzter Beitrag: 20.11.06, 22:48 -
String aus main und Methode in eine weitere Methode
Von dastool im Forum JavaAntworten: 0Letzter Beitrag: 28.01.06, 13:59



3Danke

Zitieren
Login





