我在另一个类中有一个函数,它产生值并将所有这些值存储在数组中。然后我返回了这个数组,因为我需要返回一个项目。我在函数的末尾做了一个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;
}
}
}
答案 0 :(得分:0)
我发现至少有三个错误:
花括号不正确
getResults gr
应该是GetResults gr
(复制粘贴时错字?这很奇怪......)
您致电GetResults.outputArray[1];
但在方法内定义了outputArray
。如果您的代码编译,这意味着您的类中也有一个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