Cześć wszystkim!
Swoją przygodę z Javą zacząłem ok 3 tygodni temu. Czytam książki, oglądam Tutoriale ale chyba najlepszą formą nauki pozostaje "próba" stworzenia czegoś własnego.
Postanowiłem spróbować sił i napisać coś co pobierze dane z pliku i wyświetli wykres.
Wszystko szło dobrze do tej pory jednak pojawił się problem z czytaniem danych z pliku - pewnie problem jest śmiesznie prosty ale na obecnym etapie nie potrafię sobie z nim poradzić.
A więc do rzeczy. Oto kod który posiadam:
import java.awt.BorderLayout;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
class Cena
{
String csvFile = "C:\\EURUSD.csv";
BufferedReader br = null;
String line = "";
String csvSplitBy = ",";
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
DefaultCategoryDataset czytajCene(){
try{
br = new BufferedReader(new FileReader (csvFile));
while ((line = br.readLine()) != null)
{
String[] price = line.split(csvSplitBy);
String[] rok = {"2010", "2011", "2012", "2013", "2014"};
double[]priceDouble = new double[price.length];
for (int i = 0; i < price.length; i++)
{
priceDouble[i] = Double.parseDouble(price[i]);
dataset.addValue(priceDouble[i], "cena", rok[i]);
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException f)
{
f.printStackTrace();
}
finally
{
if (br != null)
{
try
{
br.close();
}
catch (IOException g)
{
g.printStackTrace();
}
}
}
return dataset;
}
public static class Gielda {
public static void main(String[] args) throws FileNotFoundException
{
Cena cena = new Cena();
JFreeChart chart = ChartFactory.createBarChart("EURUSD", "X-label", "Y-label", cena.czytajCene(), PlotOrientation.VERTICAL, false, true, false);
ChartFrame frame1 = new ChartFrame("XYArea Chart", chart);
frame1.setVisible(true);
frame1.setSize(500, 400);
}
}
}
Wykres wyświetla się prawidłowo jeśli plik na dysku (C:\EURUSD.csv) ma postać:
1.33930,1.43860,1.33870,1.33940,1.33960,
natomiast jeśli ma postać:
1.33930,
1.43860,
1.33870,
1.33940,
1.33960,
to pokazuje się tylko jeden słupek z ostatnią wartością 1.33960
Czy może mi ktoś wyjaśnić jak poradzić sobie z tym problemem?
Jaką modyfikację trzeba wprowadzić aby wartości widoczne w pliku w formie słupka były czytane poprawnie?
Dziękuję bardzo za podpowiedzi,
Kamil