-2

我在另一个类中有一个函数,它产生值并将所有这些值存储在一个数组中。然后我返回了这个数组,因为我需要返回一个项目。我在函数的末尾做了一个 println ,它看起来像是System.out.println(outputArray[1]);在查看值是否被存储并且它确实返回了正确的值。该值为 3.68。

但是,当我尝试从另一个类访问数组时,我只是得到 1 个 0 值,而不是存储在数组中的所有值。我System.out.println(outputArray[1]);在另一个班级里又做了一次,结果是 0 而不是 3.68。

为什么它不访问并返回存储在来自函数的索引处的数组中的值?

我认为这与我没有从该函数访问返回的数组有关。一旦我解决了这个问题,我将在这个其他类中使用这些值来绘制图表。

public class GetResults{

public double[] tableOfresults() {
    double[] outputArray = new double[100];

    for(int i = 0; i<100; i++) {

       //At this point I calculate results and store them in the array using i as the index of the array

    }
    System.out.println(outputArray[1]); // produces 3.68 here
    return outputarray;


public class graph{
    getResults gr
    public XYSeries inputOutputGraph() {
        XYSeries graph = new XYSeries("My graph");
        XYDataset xyDataset = new XYSeriesCollection(graph);
        System.out.println(GetResults.outputArray[1];) //Its produces 0 here
        JFreeChart chart = ChartFactory.createXYLineChart(
            "Graph", "Time", "results",
            xyDataset, PlotOrientation.VERTICAL, true, true, false);
        ChartFrame graphFrame = new ChartFrame("XYLine Chart", chart);
        graphFrame.setVisible(true);
        graphFrame.setSize(300, 300);
        return graph;
    }
}
}
4

1 回答 1

0

我看到至少三个错误:

  1. 花括号不正确

  2. getResults gr可能应该是GetResults gr(复制粘贴时的错字?这很奇怪......)

  3. 您调用GetResults.outputArray[1];butoutputArray是在方法内部定义的。如果您的代码编译,这意味着static您的类中还有一个同名的变量,这解释了行为。

我假设你想要做的是

gr.tableOfresults()[1];

请注意,您必须更改getResults gr

GetResults gr = new GetResults(); 

让它工作


另一种可能性是您希望将tableOfresults函数定义为static,并按如下方式调用它

 GetResults.tableOfresults()[1];

在这种情况下,getResults gr不需要该行,但您应该更改public double[] tableOfresults() {

public static double[] tableOfresults() {

tableIfresults请注意,如果您从函数中访问非静态变量,这将不会编译。


第三种情况,我认为有点奇怪,是如果你想从另一个类中调用一个静态变量。在这种情况下,您应该保持GetResults.outputArray[1];原样,但进行以下更改:

getResults gr应该成为

(new GetResults).tableOfresults();

并且return outputarray;应该成为

GetResults.outputarray = outputarray;

在 GetResults 类中添加 outputArray 的声明

public static double[] outputArray

第四种可能是你想调用一个静态变量,并且也使静态变量tableOfresults()。在这种情况下,您希望GetResults.outputArray[1];保持不变,但您需要:

getResults gr应该成为

GetResults.tableOfresults();

并且return outputarray;应该成为

GetResults.outputarray = outputarray;

public double[] tableOfresults() {应该成为

public static double[] tableOfresults() {

在 GetResults 类中添加 outputArray 的声明

public static double[] outputArray
于 2013-02-10T18:29:17.123 回答