A
algebraiker
Gast
Hallo,
ich habe nachstehenden Datensatz in der Textdatei "test.txt" gegeben. An dieser Datei soll nichts verändert werden.
Auszug:
Die drei Punkte in der vorletzten Zeile sollen ausdrücken, dass noch mehr Werte dazwischen stehen. Der Strichpunkt bedeutet eine Trennung.
Frage:
Wie kann ich den Datensatz so gestalten, dass ich daraus mit Hilfe von JFreeChart ein Liniendiagramm erstellen kann?
Folgendes habe ich versucht:
Aber da bekomme ich natürlich Fehler.
Kann mir jemand helfen, wie ich den Datensatz so gestalte, dass die erste Zeile nicht betrachtet wird und alle Kommata zu Punkten werden? Und selbst wenn ich aus der Text-Datei die erste Zeile manuell lösche und alle Kommate zu Punkte konvertiere (wiederum manuell) und dann den Code laufen lasse, bekomme ich:
Weiß jemand Rat? Danke.
ich habe nachstehenden Datensatz in der Textdatei "test.txt" gegeben. An dieser Datei soll nichts verändert werden.
Auszug:
Code:
real;unreal
3437,5;
3447,5;
3447;
3446,5;2558
3446;3446,65442
3445,5;3446,222
3445;3445,88833
3444,5;3445,0473
3444;3444,56226
...
;3445,0123
Die drei Punkte in der vorletzten Zeile sollen ausdrücken, dass noch mehr Werte dazwischen stehen. Der Strichpunkt bedeutet eine Trennung.
Frage:
Wie kann ich den Datensatz so gestalten, dass ich daraus mit Hilfe von JFreeChart ein Liniendiagramm erstellen kann?
Folgendes habe ich versucht:
Java:
private XYDataset createData() throws FileNotFoundException {
File files = new File("C:/test/test.txt");
BufferedReader in = new BufferedReader(new FileReader(files));
String zeile = null;
String[] text = null;
List<Double> lines = new ArrayList<Double>();
List<Double> lines2 = new ArrayList<Double>();
try {
while ((zeile = in.readLine()) != null) {
text = zeile.split(";");
lines.add(Double.parseDouble(text[0]));
lines2.add(Double.parseDouble(text[1]));
}
lines.remove(0);
} catch (IOException e) {
e.printStackTrace();
}
XYSeries xyseries = new XYSeries("re");
try {
while ((zeile = in.readLine()) != null) {
xyseries.add(Double.parseDouble(zeile), lines.get(Integer.parseInt(zeile)));
}
} catch (IOException e) {
e.printStackTrace();
}
XYSeriesCollection xyseriescollection = new XYSeriesCollection(
xyseries);
XYSeries xyseries1 = new XYSeries("pre");
try {
while ((zeile = in.readLine()) != null) {
xyseries.add(Double.parseDouble(zeile), lines2.get(Integer.parseInt(zeile)));
}
} catch (IOException e) {
e.printStackTrace();
}
xyseriescollection.addSeries(xyseries1);
return xyseriescollection;
}
Aber da bekomme ich natürlich Fehler.
Code:
Exception in thread "main" java.lang.NumberFormatException: For input string: "t"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at testpackage.XYSplineRendererDemo1$DemoPanel.createSampleData(XYSplineRendererDemo1.java:46)
at testpackage.XYSplineRendererDemo1$DemoPanel.<init>(XYSplineRendererDemo1.java:115)
at testpackage.XYSplineRendererDemo1.createDemoPanel(XYSplineRendererDemo1.java:127)
at testpackage.XYSplineRendererDemo1.<init>(XYSplineRendererDemo1.java:122)
at testpackage.XYSplineRendererDemo1.main(XYSplineRendererDemo1.java:131)
Kann mir jemand helfen, wie ich den Datensatz so gestalte, dass die erste Zeile nicht betrachtet wird und alle Kommata zu Punkten werden? Und selbst wenn ich aus der Text-Datei die erste Zeile manuell lösche und alle Kommate zu Punkte konvertiere (wiederum manuell) und dann den Code laufen lasse, bekomme ich:
Code:
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at testpackage.XYSplineRendererDemo1$DemoPanel.createSampleData(XYSplineRendererDemo1.java:46)
at testpackage.XYSplineRendererDemo1$DemoPanel.<init>(XYSplineRendererDemo1.java:115)
at testpackage.XYSplineRendererDemo1.createDemoPanel(XYSplineRendererDemo1.java:127)
at testpackage.XYSplineRendererDemo1.<init>(XYSplineRendererDemo1.java:122)
at testpackage.XYSplineRendererDemo1.main(XYSplineRendererDemo1.java:131)
Weiß jemand Rat? Danke.