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)

何か案は ?

4

2 に答える 2

1

私の推測:あなたは関数を呼び出します

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

例外は言う

Requires 'start' < 'end'

だからおそらくあなたは持っていtimemin == timemaxます。ArrayList<Float> timeの値が 1 つしかないか、すべての値が同じであることが理由として考えられます。

于 2013-03-06T09:13:14.603 に答える
1

ソースから:

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

于 2013-03-06T09:12:20.557 に答える