2013-03-06 81 views
0

我在主看起来像这样的代码:例外:需要“开始” <“结束”

ArrayList<Integer> temper = new ArrayList<>(); 
    ArrayList<Float> time = new ArrayList<>(); 
    while(rs.next()){ 
     time.add(rs.getFloat("Time_ms")); 
     temper.add(rs.getInt("VarValue"));     
    } 
    timemax = Collections.max(time); 
    timemin = Collections.min(time);   
    tempermax = Collections.max(temper); 
    tempermin = Collections.min(temper); 

我也有这个类,创建一个图表:

public NormalDistributionDemo(final String title) { 

    super(title); 
    Function2D normal = new NormalDistributionFunction2D(2, 8); 
    XYDataset dataset = DatasetUtilities.sampleFunction2D(normal,0, 5, 10, "Normal"); 
    final JFreeChart chart = ChartFactory.createXYLineChart(
     "AS Hellas Database", 
     "Date", 
     "Temperature", 
     dataset, 
     PlotOrientation.VERTICAL, 
     true, 
     true, 
     false 
    ); 
} 

此代码工作正常,但我想从我的数据库中提取值并将它们插入x,y轴。

我这样做:

Function2D normal = new NormalDistributionFunction2D(tempermin, tempermax); 
XYDataset dataset = DatasetUtilities.sampleFunction2D(normal,timemin, timemax,  10,"Normal"); 

而且我得到这个错误:

Exception in thread "main" java.lang.IllegalArgumentException: Requires 'start' < 'end'. 
at  org.jfree.data.general.DatasetUtilities.sampleFunction2DToSeries(DatasetUtilities.java:542) 
at  org.jfree.data.general.DatasetUtilities.sampleFunction2D(DatasetUtilities.java:511) 
at org.jfree.chart.demo.NormalDistributionDemo.<init> (NormalDistributionDemo.java:80) 
at org.jfree.chart.demo.NormalDistributionDemo.main(NormalDistributionDemo.java:71) 

任何想法?

+0

我认为这个例外很容易理解。它要求'start'的值比'end'的值小__。不允许有相同的值... – ppeterka 2013-03-06 09:11:25

+1

您是否尝试过调试以查看传递给'sampleFunction2D'的参数的值? – alestanis 2013-03-06 09:11:54

+0

问题似乎是在XYDataset数据集= DatasetUtilities.sampleFunction2D(正常,timemin,timemax,10,“正常”)..我认为timemin越来越timemax – Algorithmist 2013-03-06 09:12:20

回答

1

sources

public static XYSeries sampleFunction2DToSeries(Function2D f, 
     double start, double end, int samples, Comparable seriesKey) { 

    // some code 

    if (start >= end) { 
     throw new IllegalArgumentException("Requires 'start' < 'end'."); 
    } 

    // some code 
} 

这意味着,timemin要传递更少或相同timemax

1

我的猜测:你调用函数

DatasetUtilities.sampleFunction2D(normal,timemin, timemax, 10,"Normal"); 

异常说

Requires 'start' < 'end' 

所以可能你有timemin == timemax。原因可能是ArrayList<Float> time只有一个值,或者它的所有值都是相同的。

相关问题