4

私のコードは、配列に対してアルゴリズムを実行し、結果を ArrayList に格納します。問題は、後続の処理のために ArrayList の内容にアクセスできないことです。私の実際のコードは数千行の長さですが、問題を捕捉し、以下の短いコード セグメントで問題を再現しました。以下の 3 つのクラスを使用して、変更を加えずに IDE で実行して、問題を自分で再現できます。ご覧のとおり、makeArrayList.java 内の ArrayList にデータが取り込まれますが、ArrayList の内容はその後 getArrayList.java に表示されません。

ArrayList の内容が getArrayList.java および myGUI.java で表示/使用可能になるように、以下のコードを修正する方法を誰か教えてもらえますか?

3 つのクラスのコードは次のとおりです。

myGUI.java のコードは次のとおりです。

package arrayListPractice;

import java.awt.Dimension;
import javax.swing.JFrame;

public class myGUI extends JFrame {
public myGUI() {
    super("test GUI");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setPreferredSize(new Dimension(300, 200));
    getArrayList getArrList = new getArrayList();
    getArrList.getPeaks();
    this.pack();}

public static void main(String args[]) {
    myGUI myFrame = new myGUI();
    myFrame.setVisible(true);}}

getArrayList.java のコードは次のとおりです。

package arrayListPractice;
import java.util.*;

public class getArrayList {
public static ArrayList<Integer> PeakList;
int myLength = 3500;
double[] myArray=new double[myLength];

public ArrayList<Integer> getPeaks(){
    for(int h=0;h<myLength;h++){myArray[h]=Math.sqrt((double)h);}
    PeakList = new makeArrayList(myArray,myLength);
    System.out.println("in getArrayList.getPeaks, PeakList.size() is: "+PeakList.size());
    return PeakList;}}

makeArrayList.java のコードは次のとおりです。

package arrayListPractice;

import java.util.*;

public class makeArrayList extends ArrayList<Integer> {
ArrayList<Integer> myArrayList= new ArrayList<Integer>();

public makeArrayList(double[] myArray, int arrayLength) {
    // NOTE: My actual code does many transformations to myArray.  The resulting myArrayList 
    // contains only 1/1000 of the points in myArray.  This code is just simplified for debugging.
    for(int i=0;i<arrayLength;i++){myArrayList.add((int)Math.pow(myArray[i],2));}
    System.out.println("in makeArrayList, PeakList.size() is: "+myArrayList.size());}}
4

1 に答える 1