Jfree图表抛出空指针异常
我正在使用以下代码来获得继玫瑰印度教程后的蜡烛棒图。然而,当我尝试填充我的数组时,它会在创建数据集时抛出空指针。Jfree图表抛出空指针异常
public class CandleStickChart extends ApplicationFrame {
static String date[]=new String[2000];
static double open[]=new double[2000];
static double close[]=new double[2000];
static double high[]=new double[2000];
static double low[]=new double[2000];
static double volume[]=new double[2000];
static Date d[]=new Date[2000];
public CandleStickChart(String titel) {
super(titel);
final DefaultHighLowDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(600, 350));
setContentPane(chartPanel);
}
private DefaultHighLowDataset createDataset() {
DefaultHighLowDataset data = new DefaultHighLowDataset(
"", d, high, low, open, close, volume);
return data;
}
private JFreeChart createChart(final
DefaultHighLowDataset dataset) {
final JFreeChart chart = ChartFactory.createCandlestickChart(
"Candlestick Demo", "Time", "Price", dataset, false);
return chart;
}
public static void main(String args[])
{
//populating arrays using data
//checking if array is populated.
for(int i=0;i<temp;i++)
{
System.out.println(" "+high[i]+" "+low[i]+" "+open[i]+" "+close[i]+" "+volume[i]);
System.out.println(d[i]);
}
CandleStickChart chart = new CandleStickChart("Candle Stick Chart");
chart.pack();
RefineryUtilities.centerFrameOnScreen(chart);
chart.setVisible(true);
}
}
异常
java.lang.NullPointerException
at org.jfree.data.xy.DefaultHighLowDataset.getX(DefaultHighLowDataset.java:147)
at org.jfree.data.xy.AbstractXYDataset.getXValue(AbstractXYDataset.java:75)
at org.jfree.data.general.DatasetUtilities.iterateDomainBounds(DatasetUtilities.java:777)
at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:677)
at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:650)
at org.jfree.chart.plot.XYPlot.getDataRange(XYPlot.java:4551)
at org.jfree.chart.axis.DateAxis.autoAdjustRange(DateAxis.java:1284)
at org.jfree.chart.axis.DateAxis.configure(DateAxis.java:716)
at org.jfree.chart.axis.Axis.setPlot(Axis.java:968)
at org.jfree.chart.plot.XYPlot.<init>(XYPlot.java:666)
at org.jfree.chart.ChartFactory.createCandlestickChart(ChartFactory.java:1946)
at CandleStickChart.createChart(CandleStickChart.java:74)
at CandleStickChart.<init>(CandleStickChart.java:30)
at CandleStickChart.main(CandleStickChart.java:189)
我在做什么错 我意识到异常有事情做的日期排列。 BUt当我打印日期数组时,这是我得到的。时间可能为零,但这是否意味着它必须抛出空指针异常。
Wed Mar 10 00:00:00 IST 2010
Tue Mar 09 00:00:00 IST 2010
Mon Mar 08 00:00:00 IST 2010
Fri Mar 05 00:00:00 IST 2010
Thu Mar 04 00:00:00 IST 2010
Wed Mar 03 00:00:00 IST 2010
Tue Mar 02 00:00:00 IST 2010
Mon Mar 01 00:00:00 IST 2010
Fri Feb 26 00:00:00 IST 2010
Thu Feb 25 00:00:00 IST 2010
Wed Feb 24 00:00:00 IST 2010
Tue Feb 23 00:00:00 IST 2010
Mon Feb 22 00:00:00 IST 2010
Fri Feb 19 00:00:00 IST 2010
Thu Feb 18 00:00:00 IST 2010
Wed Feb 17 00:00:00 IST 2010
Tue Feb 16 00:00:00 IST 2010
Fri Feb 12 00:00:00 IST 2010
Thu Feb 11 00:00:00 IST 2010
Wed Feb 10 00:00:00 IST 2010
Tue Feb 09 00:00:00 IST 2010
Mon Feb 08 00:00:00 IST 2010
Fri Feb 05 00:00:00 IST 2010
的时间可以为零,但并不意味着它必须抛出一个空指针异常 。它抛出一个空指针异常意味着你的数据集本身不是null,但是当它在你的数据集中使用指定的数据执行createCandlestickChart方法时,指定的数据可能为空。我想你应该专注于数据集的一些X值(org.jfree.data.xy.DefaultHighLowDataset。的getX(DefaultHighLowDataset.java:147))
您没有提供任何数据,只是emtpy数组(默认初始化)。因此您的日期数组包含空值,这会导致NullPointerException。我看不到(从你的代码)如何打印日期数组可以给你这样的结果。我试过你的代码,日期(d更准确)只包含空值。
行org.jfree.data.xy.DefaultHighLowDataset.getX(DefaultHighLowDataset.java:147)访问日期数组并调用项目上的getTime(可能与您使用的版本不同)。
我已经删除了我填充阵列的部分。之后的print语句检查我的数组是否以适当的方式填充。 – user1092042 2012-03-31 09:54:08
好吧,我明白了。但NPE仍然认为,date数组中的某个元素为null。 – nansen 2012-03-31 10:02:30
请在顶部看我的评论。 – user1092042 2012-03-31 10:22:15
'CandleStickChart.java:74'这是74行吗?为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)(其中我的问题的答案很明显)。 – 2012-03-31 09:24:41
final JFreeChart chart = ChartFactory.createCandlestickChart( “Candlestick Demo”,“Time”,“Price”,dataset,false); 回报图表;正如我所说数据集似乎有一些问题,但我无法识别它 – user1092042 2012-03-31 09:28:38
请使用代码格式输入和输出。 *“数据集似乎有问题”*为什么不准备一个有效的硬编码数据的SSCCE来测试该理论?如果你能做到这一点,就会指出数据集是问题所在。如果硬编码数据显示相同的问题,如果您将其作为编辑进行发布,我们可能会提供更多帮助。 – 2012-03-31 09:42:57