Textfile -> Array -> JTable

Status
Nicht offen für weitere Antworten.

pope

Mitglied
Ich habe folgendes Problem.
Ich habe ein Textfile, gefüllt mit Zahlenwerten, diese Zahlenwerte werden in eine List geschrieben und danach in ein 2D-Array gefüllt.

measures = new double[(data.size() / 3)][3];
measuresString = new String[(data.size() / 3)][3];
int a = data.size() / 3;
System.out.println(a);
int i = 0;
int z = 0;
while (z < (data.size()/3)) {
try {
measures[z][0] = Double.valueOf(data.get(i));
measuresString[z][0] = data.get(i).toString();
measures[z][1] = Double.valueOf(data.get(i++));
measuresString[z][1] = data.get(i).toString();
measures[z][2] = Double.valueOf(data.get(i++));
measuresString[z][2] = data.get(i).toString();
System.out.println(measuresString[z][0] + measuresString[z][1] + measuresString[z][2]);

} catch (NumberFormatException e) {
System.out.println(e.getMessage());
}
z++;
i++;
}


"a" gibt 5 zurück
Die beides Arrays sind public deklariert. Das Ergebnis sollte also ein [5][3] Array sein.


Mit dieser Methode möchte ich das Array aus dem Objekt holen

public String[][] getMeasuresString(){
return measuresString;
}

Diese Methode wird in der actionperformed aufgerufen nachdem das File eingelesen wurde.

public void update() {
String[] titel = {"Frequenz", "Re(Z)", "Img(Z", "esfefs", "asa"};
String[][] datas = data.getMeasuresString();

table = new JTable(datas, titel);
JScrollPane pane = new JScrollPane(table);
frame.add(pane, BorderLayout.SOUTH);

}


Nun steckt aber irgendwo eine NullPointerExcption, weiss aber nicht wo ich noch ansetzten könnte.

Wenn ich in der getMeasuresString() ein Array mit festen Wertden definiere funtkioniert es.


Jemand eine Idee? Hab versucht nur das wichtigste vom Code zu kopieren
 

max40

Bekanntes Mitglied
Hi!
Du hast Spalten mit Zeilen vertauscht, es muss [3][5] sein, wobei 3 für 3 Zeilen und 5 für 5 Spalten steht!
Also musst du einiges umstellen!
 

pope

Mitglied
Das hätte ja dann einfach einen Einfluss auf title[], wenn da aber weniger Werte drin stehen als als es eig. spalten hat, dann schneidet er ja einfach ab.

Hab die Schleife mal so geändert, funktioniert aber dennoch nicht.
Ev. hab ich dich auch einfach falsch verstanden.

int a = data.size() / 3;
measures = new double[3][a];
measuresString = new String[3][a];

System.out.println(a);
int i = 0;
int z = 0;
while (z < (data.size()/3)) {
try {
measures[0][z] = Double.valueOf(data.get(i));
measuresString[0][z] = data.get(i).toString();
measures[1][z] = Double.valueOf(data.get(i++));
measuresString[1][z] = data.get(i).toString();
measures[2][z] = Double.valueOf(data.get(i++));
measuresString[2][z] = data.get(i).toString();
System.out.println(measuresString[0][z] + "\t" + measuresString[1][z] + "\t" + measuresString[2][z]);

} catch (NumberFormatException e) {
System.out.println(e.getMessage());
}
z++;
i++;
}

Eigentlich brauche ich aber ein Array mit 3 Spalten und lenght/3 zeilen.
 
Zuletzt bearbeitet:

max40

Bekanntes Mitglied
Wenn du 3 Spalten haben willst, dann musst du statt 5 Spalten überschriften nur 3 angeben, aber dann auch die Logik vom 1 Beitrag
 

pope

Mitglied
Das hatte ich ursprünglich schon, funktioniert dennoch nicht

Ich kriege folgeden Ausgabe

run:
C:\testFile.z1p
5
1 0.0080223085 0.0055327172
1.014495 0.0080642702 0.0056592173
1.029201 0.0083045961 0.0056325858
1.044119 0.0080184938 0.0058722701
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
1.059254 0.0081253053 0.0059255332
at javax.swing.JTable$1.getRowCount(JTable.java:665)
at javax.swing.JTable.getRowCount(JTable.java:2584)
at javax.swing.plaf.basic.BasicTableUI.createTableSize(BasicTableUI.java:1646)
at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(BasicTableUI.java:1687)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1632)
at javax.swing.JViewport.getViewSize(JViewport.java:1018)
at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScrollPaneLayout.java:476)
at java.awt.Container.preferredSize(Container.java:1616)
at java.awt.Container.getPreferredSize(Container.java:1601)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1634)
at java.awt.BorderLayout.layoutContainer(BorderLayout.java:804)
at java.awt.Container.layout(Container.java:1432)
at java.awt.Container.doLayout(Container.java:1421)
at java.awt.Container.validateTree(Container.java:1519)
at java.awt.Container.validateTree(Container.java:1526)
at java.awt.Container.validateTree(Container.java:1526)
at java.awt.Container.validate(Container.java:1491)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:635)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:127)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
 

pope

Mitglied
package javaapplication2;


import java.io.*;
import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import java.util.LinkedList;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class DBController {

public String parameters;
public double[][] measures;
public String[][] measuresString;

//returns measured data
public double[][] getMeasures(){
return measures;
}

public String[][] getMeasuresString(){
/* String[][] blabla = {{"12","12","12"},
{"12","12","12"},
{"12","12","12"},
{"12","12","12"},
{"12","12","12"}} ;
*/
String[][] blabla = measuresString;


return blabla;
// return measuresString;
}

//returns measurement parameters
public String getParameters(){
return parameters;
}

public void fileCreater() {
}

//select a file by filechooser, splits the selected file into comment-header(LinkedList comment),
//measurement parameteres(String parameters) and measured data(measures[][])
public void chooser() throws FileNotFoundException, IOException {

String buffer;

LinkedList<String> comment = new LinkedList<String>();
LinkedList<String> data = new LinkedList<String>();
String dir = System.getProperty("user.dir"); //returns current software path
JFileChooser fileChooser = new JFileChooser(dir);

//filefilter, so only z1p and s1p files are selectable
fileChooser.setFileFilter(new FileFilter() {

@Override
public boolean accept(File f) {
return f.isDirectory() ||
f.getName().toLowerCase().endsWith(".z1p") ||
f.getName().toLowerCase().endsWith(".s1p");
}

@Override
public String getDescription() {
return "z1p, s1p-Files";
}
});

if (fileChooser.showOpenDialog(null) ==
JFileChooser.APPROVE_OPTION) {
System.out.println(fileChooser.getSelectedFile().toString()); //returns current file path
try {
File file = fileChooser.getSelectedFile();
FileInputStream inputstream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(inputstream);
BufferedReader bff = new BufferedReader(reader);

while ((buffer = bff.readLine()) != null) {

if (buffer.indexOf("!") == 0) {
comment.add(buffer);
} else if (buffer.indexOf("#") == 0) {
parameters = buffer;
} else {
Pattern p = Pattern.compile("[^ ^\t^\n^\r]+");
Matcher m = p.matcher(buffer);
while (m.find()) {
data.add(m.group());

}

}
}


// convert data List into doubble Array
// measures[][] is filled with measured data
measures = new double[(data.size() / 3)][3];
measuresString = new String[(data.size() / 3)][3];
int a = data.size() / 3;
System.out.println(a);
int i = 0;
int z = 0;
while (z < (data.size()/3)) {
try {
measures[z][0] = Double.valueOf(data.get(i));
measuresString[z][0] = data.get(i).toString();
measures[z][1] = Double.valueOf(data.get(i++));
measuresString[z][1] = data.get(i).toString();
measures[z][2] = Double.valueOf(data.get(i++));
measuresString[z][2] = data.get(i).toString();
System.out.println(measuresString[z][0] + "\t" + measuresString[z][1] + "\t" + measuresString[z][2]);

} catch (NumberFormatException e) {
System.out.println(e.getMessage());
}
z++;
i++;
}
// System.out.println(measures.toString());
} catch (IOException e) {
System.out.print("Es gab einen Fehler");
}

} else {
System.out.println("Auswahl abgebrochen ");
}
}
}



Aus einem Controller rufe ich bei klick auf einen Button new DBController() auf

open.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
DBController data = new DBController();
try {
data.chooser();
} catch (FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
input.setText(data.getParameters());
update();

}
});

die update() methode sollte nun eine JTable füllen

public void update() {
String[] titel = {"Frequenz", "Re(Z)", "Img(Z"};
String[][] datas = data.getMeasuresString();

table = new JTable(datas, titel);
JScrollPane pane = new JScrollPane(table);
frame.add(pane, BorderLayout.SOUTH);

}
 

max40

Bekanntes Mitglied
ich find da kein fehler, ausser in der datei steht was drin, was es zum absturz bringt!
 

pope

Mitglied
das komische ist, die Zeile
System.out.println(measuresString[z][0] + "\t" + measuresString[z][1] + "\t" + measuresString[z][2])

Gibt auch wirklich das aus was im File steht.

Wie löst man solch ein Problem Debugtechnisch am intelligentesten?
 

max40

Bekanntes Mitglied
z.B. mit Eclipse in der 1. Zeile ein Breakpoint setzen und mit F6 Zeile für Zeile kontrollieren ob die Variablen den Wert haben, den sie haben sollten?!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E TextFile in Array reinspeichern Allgemeine Java-Themen 3
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
S Prüfen ob Textfile existiert Allgemeine Java-Themen 9
M Textfile erstellen Allgemeine Java-Themen 11
eskimo328 Textfile nach Stromausfall leer Allgemeine Java-Themen 5
T Input/Output Zeilenumbrüche beim exportieren in eine Textfile Allgemeine Java-Themen 7
D welchen line brak benutzt ein geg. textfile Allgemeine Java-Themen 3
K Scanner - große Textfile, nur 0 ab betim. Wert Allgemeine Java-Themen 4
N Encoding Unicode Textfile Allgemeine Java-Themen 5
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
P Textfile Encoding herausfinden Allgemeine Java-Themen 2
F Umlaute: E-Mail per JavaMail und Textfile Allgemeine Java-Themen 5
I Attribute in Textfile auslesen Allgemeine Java-Themen 13
M Zugriff auf Resource (Textfile) in einem Jar? Allgemeine Java-Themen 2
S TextFile aus JAR auslesen Allgemeine Java-Themen 3
R In Textfile schreiben - append Allgemeine Java-Themen 5
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben