有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java创建for循环以创建要添加到图形中的多个对象

我正在尝试创建一个图表。我遵循一个教程,这是一种硬编码的方法:

GraphView graph = (GraphView) findViewById(R.id.graph);
LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(new DataPoint[] {
          new DataPoint(0, 1),
          new DataPoint(1, 5),
          new DataPoint(2, 3),
          new DataPoint(3, 2),
          new DataPoint(4, 6)
});
graph.addSeries(series);

然而,我有数据来自我的数据库,它已经被解析了。我正试图将这些数据输入到我的图表中。我的方法部分有效,数据显示在x轴和y轴上,但图形本身没有绘制,我不知道为什么

这是我的一小段代码:

    for(int i =0; i<Profit.length; i++){
Date date = getDate()[i] 
                 series = new LineGraphSeries<DataPoint>(new DataPoint[]{
                        new DataPoint(date, Profit[i])


                });


            }

                        graph.addSeries(series);
            System.out.println("GRAPH COMPLETE");

我只给你看了一点,这就是问题所在。这是循环。我需要在graph.addSeries(series)之前使用for循环,以便首先收集数据。但我发现,按照最初显示的硬编码方式进行编码是可行的,但我尝试的自动化方式只起到了一半的作用

有人能告诉我需要做什么吗

编辑:

我已经尝试实现建议的编辑,但仍然得到相同的结果

Graph


共 (3) 个答案

  1. # 1 楼答案

    问题似乎是每次循环中都在重新初始化系列

    试着这样添加

    DataPoint[] values = new DataPoint[Profit.length];
    for(int i =0; i<Profit.length; i++){
        Date date = getDate()[i];
        DataPoint v = new DataPoint(date, Profit[i]);
        //EDIT::
        DataPoint v = new DataPoint(Dates.get(i), Profit[i]);
    
        values[i] = v;
    
    }
    
    LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(values);
    graph.addSeries(series);
    
  2. # 2 楼答案

    DataPoint[] dataPoints = new DataPoint[Profit.length]; // declare an array of DataPoint objects with the same size as your list
    for (int i = 0; i < Profit.length; i++) {
    Date date = getDate()[i];
    // add new DataPoint object to the array for each of your list entries
     dataPoints[i] = new DataPoint(date, Profit[i]); 
    }
    LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(dataPoints);
    

    目前,每次运行for循环时,都会创建一个新的LineGraphSeries

  3. # 3 楼答案

    您应该在for循环之前创建列表,并在for循环内部向列表中添加元素:

    List<DataPoint> dataPoints = new ArrayList<>();
    
    for(int i = 0; i < Profit.length; i++){
        Date date = getDate()[i];
        dataPoints.add(new DataPoint(date, Profit[i]));
    }
    
    DataPoint[] pointsArray = new DataPoint[];
    LineGraphSeries<DataPoint> series = new LineGraphSeries<>(dataPoints.toArray(pointsArray));
    
    graph.addSeries(series);
    System.out.println("GRAPH COMPLETE");