Testklasse wie schnell Boyermoore ist stuerzt ab
-
ich habs halt als static deklariert, weil er gemeckert hat.
ich habs jetzt so gelöst, dass die setter-chararray methoden
klassenvariable= _methodenparameter machen. sollte doch der logik
nach funktionieren, er bringt mir aber immer noch ne exception..
ich habe ehrlich gesagt, nicht so ganz kapiert, warum
ich nicht in der settext methode nicht schreiben kann
char[] text= new char[len];
warum ist damit nicht wirklich platz in der klassenvariable gemacht worden?
-
the_menace schrieb:
...nicht so ganz kapiert, warum
ich nicht in der settext methode nicht schreiben kann
char[] text= new char[len];
warum ist damit nicht wirklich platz in der klassenvariable gemacht worden?Das wurde ja nicht behauptet. Mit
structure[] viele = new structure[versuche];
werden nur keine Klasseninstanzen erzeugt.
Unterschiede zwischen Objekt-Arrays und primitiven Datentypen!Jockel
-
jetzt bin ich total verwirrt
wenn ich jetzt denn wirklich versuche
einzeln platz zu reservieren mit viele[i]=new structure();
kommt der fehler "non-static variable this cannot be referenced from a static context viele[i] = new structure();"
das bild das ich von der java'anischen speicherverwaltung hatte, ist mittlerweile
komplett zusammengebrochen :|
-
Du musst das dringend aufräumen!
Warum ist structure eine lokale Klasse, wenn advbm die niemals
brauch?Mach mal für den Anfang 3 Klassen in 3 Dateien:
1. advbm
2. structure
3. Test, wo nur die main-Fkt drin ist.Dann wird's klappen, bzw. weiss man dann eher woran es liegt.
Jockel
-
CengizS schrieb:
Übrigens ist es nicht schöner Stil alle Methoden als static zu definieren. Das gibt auch schon mal Probleme bei einer Umsetzung (wie oben).
Wie hier schon angesprochen ...
-
CengizS schrieb:
CengizS schrieb:
Übrigens ist es nicht schöner Stil alle Methoden als static zu definieren. Das gibt auch schon mal Probleme bei einer Umsetzung (wie oben).
Wie hier schon angesprochen ...
Sehe ich zumindest bei der advbm Klasse anders.
Diese Funktionen stellen Dienste bereit, die unabhängig von einer
Instanz arbeiten.
Bei so Sachen wie max(a,b) würde ich statische Methoden jedenfalls vorziehen.Jockel
-
Sicher, ich sagte ja auch dass man nicht alle Methoden static machen soll.
-
Ich habe jetzt alles in eigene klassen gepackt
Die ehemals structure klasse ist in speicher.java
und heisst auch so:
und ich habe in den setterfunktionen nochmal platz für die sachen allokiert
aber trotzdem gibts ne nullpointerexception. Ich schätze mal, dass hängt wieder damit zusammen, oder?
dreiste frage, was wäre denn richtig und vor allem *warum*?
weil wenn ich in den forschleifen der setter methoden zusätzlich noch
text[i]=new char(); definiere, meckert der compiler von wegen incompatible types.
ein bisschen im trüben und in google rumstochern hat nicht wirklich was erbracht.public class speicher { private char[] text; private char[] muster; private int stelle; private long dauer; public char[] gettext() { return text; } public char[] getmuster() { return muster; } public int getstelle() { return stelle; } public long getdauer() { return dauer; } public void settext(char[] _text) { text = new char[_text.length]; for(int i=0;i<_text.length;i++) text[i]=_text[i]; } public void setmuster(char[] _muster) { muster = new char[_muster.length]; for(int i=0;i<_muster.length;i++) muster[i]=_muster[i]; } public void setstelle(int _stelle) { stelle=_stelle; } public void setdauer(long _dauer) { dauer=_dauer; } }
-
Das Problem liegt nicht in der Klasse structure (jetzt speicher) sondern in der Art und Weise wie du ein Array von solchen Objekten erzeugst.
Du musst zuerst ein Array erzeugen
Jedes Array-Element muss für sich selbst neu erzeugt werden wie in meinem Beispiel zu Anfang.
-
so, dank euch geht das jetzt
jetzt hab ich aber noch ein problem, ich generiere randommässig ein paar strings
wobei die zeichen intmässig alle zwischen (also davor halt die (char) konvertierung) 66 und 88 liegen. trotzdem kommen da nicht druckbare zeichen und <enter> hervor. hat jemand ne ahnung, woran das liegen könnte?