danvan Geschrieben 7. Juni 2008 Geschrieben 7. Juni 2008 (bearbeitet) hallo, ich habenne frage. Ich wollte ein JTable implementieren und ich habe die erforderlichen Klassen importiert (javax.swing.*) NUn möchte ich ein zweidimensionales Array einlesen String[][], aber das geht nicht. ES wird imemr angezeigt: JTable(String[][]) not defined. Wo liegt der Fehler? Selbst wenn ich das Beispiel aus dem Lehrbuch komplett kopiere, komtm der Fehler... LG Bearbeitet 7. Juni 2008 von danvan Zitieren
danvan Geschrieben 7. Juni 2008 Autor Geschrieben 7. Juni 2008 ah, hat sich geklrt. Hab mir mal die KOnstruktoren besorgt. Den Konstruktor, den ich wollte, gibt es offenbar nicht. Ich weiß nur nicht, warum das dann im Lehrbuch steht ... Zitieren
geloescht_Newlukai Geschrieben 7. Juni 2008 Geschrieben 7. Juni 2008 Die Fehlermeldung sagt Dir, daß es den Konstruktor, den Du benutzt, nicht gibt. Ein Blick in die Java API bestätigt das. perdi würde jetzt erwähnen, seine Kristallkugel sei in Reparatur . Will heißen, ohne Deinen Code zu sehen, kann keiner sagen, was genau Du falsch machst. Bis auf die Tatsache, daß Du eben den falschen Konstruktor nutzt, kann man Dir nur mit Ausführungen zur JTable helfen. Zitieren
danvan Geschrieben 7. Juni 2008 Autor Geschrieben 7. Juni 2008 (bearbeitet) hallo newlukai :-) bin aj schon drauf gekommen. jetzt gibte s das naächste Prob WEnn ich die argumente an den korrekten Konstruktor abgebe, dann bekomem ich ne arrayIndexOutOfBoundsException Woran liegt das nun? Es wird ein Array befüllt mit: s[0] = wert (mit ner for-schleife) dazu nochdie zellüberschriften: String[] headers = {"x","f(x)"}; wenn ich nun aufrufe: JTable tab = new JTable (s, headers); gibt es die Exception. Was bedeutet diese Exception denn generell? Bearbeitet 7. Juni 2008 von danvan Zitieren
danvan Geschrieben 7. Juni 2008 Autor Geschrieben 7. Juni 2008 hier mal der code: public static String[][] printMults( int num, int male) { String[][] s = {}; for (int i=0; i<=male; i++) { long zahl = Math.round(Math.pow(num, i)); String hib = String.valueOf(zahl); s[i][0] = hib; } return s; } // Methode zur Ausgabe des Multiplikationsarrays hier ist der abschnitt zm einlesen in die tabelle: String[][] dat = printMults(a,; String[] headers = {"x","f(x)"}; JTable tab = new JTable(dat, headers); f.add(tab); // f ist das Frameobjekt [/code] Warum gibt es beid er ausführung ne ArrayIndexOutofBoundException ? Zitieren
Dragon8 Geschrieben 7. Juni 2008 Geschrieben 7. Juni 2008 Der Fehler tritt nicht erst auf wenn du das Array an den Konstruktor der JTable übergibst sondern schon vorher in deiner Methode printMults. String[][] s = {}; Damit erzeugst du ein vollkommen leeres Array, und da Java keine dynamisches Arrays kennt, kannst du diesem Array danach auch keine Werte zuweisen. s[i][0] = hib; Sodass dieser Code schon eine IndexOutOfBounds-Exception wirft, weil schon das erste Eintragen in das Array über der Grenze des Arrays liegt. Du musst dementsprechend also vorher schon eine bestimmte Größe für das Array angeben. Zitieren
danvan Geschrieben 7. Juni 2008 Autor Geschrieben 7. Juni 2008 ah,d anke dragon. wie mache ich das dann, den konstruktor so aufrifen, dass ich die länge als parameter mitangebe? LG Zitieren
danvan Geschrieben 7. Juni 2008 Autor Geschrieben 7. Juni 2008 das problem ist jetzt behoben, aber dieslbe exception wuird weiterhin ausgeworfen. ich habe aber kein weietres array deklariert, bis auf das hier: String[][] dat = printMults(a,;[/CODE] ist das zulässig? Zitieren
Dragon8 Geschrieben 7. Juni 2008 Geschrieben 7. Juni 2008 Solange die Methode ein Array mit 2 Dimensionen zurück gibt, ist das zulässig ja. Wie sieht denn deine Methode "printMults" mittlerweile aus? Zitieren
danvan Geschrieben 7. Juni 2008 Autor Geschrieben 7. Juni 2008 hallo dragon, hier ist die methode: public static String[][] printMults( int num, int male) { String[][] s = new String[male][male]; for (int i=0; i<=male; i++) { long zahl = Math.round(Math.pow(num, i)); String hib = String.valueOf(zahl); s[i][0] = hib; } return s; } Zitieren
geloescht_Newlukai Geschrieben 8. Juni 2008 Geschrieben 8. Juni 2008 Was ich jetzt sage, ist nicht durch Ausprobieren fundiert Ich glaube, Du mußt die Arrays die Du im Arrays verwendest, erst einmal erzeugen: public static String[][] printMults( int num, int male) { String[][] s = new String[male][male]; for (int i=0; i<=male; i++) { long zahl = Math.round(Math.pow(num, i)); String hib = String.valueOf(zahl); s[i] = new String[male]; s[i][0] = hib; } return s; } Zitieren
Dragon8 Geschrieben 8. Juni 2008 Geschrieben 8. Juni 2008 @Newlukai; soweit ich weiß muss man dies nicht machen. Und das Problem mit der Methode wird zurzeit wahrscheinlich an folgender Stelle bestehen: for (int i=0; i[B]<=[/B]male; i++) Wenn du dein Array mit einer Größe von "male" erzeugst, geht der Index des Arrays von 0 - (male -1). Deine Schleife zählt die Variable aber bis zum Wert von "male" hoch, wodurch du beim letzten Durchlauf wieder über die Grenzen des Arrays gehst. Des weiteren, zwar kein Fehler, aber ich sehe den Grund dafür noch nicht. Du erstellst ein zweidimensionales Array mit n-Feldern, dabei hat jedes Feld aber wieder genau n-Felder. in der 2. Dimension belegst du aber nur das 1. Feld mit einem Wert, die restlichen Felder sind also unnütz, soweit ich das jedensfall sehe. Zitieren
danvan Geschrieben 8. Juni 2008 Autor Geschrieben 8. Juni 2008 hallo dragon, ist mr schon aufgefallen und habe es gelöst. Die apllikation läuft jetzt ohen Murren. LG Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.