イライラする問題があるようです - 配列リストの要素が上書きされています。多くのフォーラムで多くの投稿を見てきましたが、解決できませんでした。:チョップ:
私のプログラム (実際には Java で実装された FBDK 関数ブロック アルゴリズム) で、入力変数 (PART) のデータを出力変数配列 (PART_array) の要素に格納したいと考えています。このプロセスは (イベントの発生により) 複数回発生するため、変数を複数の配列要素に格納する必要があります。
問題は、PART_array の要素が最後のエントリによって上書きされることです。たとえば、最初のイベント発生の場合、PART_array[] = ["1"," "," "," "," "," "]. 次に、2 番目のオカレンスで、PART_array[] = ["1","2"," "," "," "," "] の代わりに、PART_array[] = ["2","2", " "、" "、" "、" "] - したがって、上書きを示します。PART_ARRAY ArrayList への格納ですでに上書きが発生していることに気付きました。(p = new Part()) を再初期化することで問題は解決すると思いました...明らかにそうではありません。
この問題を解決するための助けがあれば、大歓迎です! コードは次のとおりです。
public class STORE_TO_ARRAY extends fb.rt.FBInstance {
public ArrayList<Part> PART_ARRAY = new ArrayList<Part>();
Part p = new Part();
/** The default constructor. */
public STORE_TO_ARRAY() {
super();
}
/** ALGORITHM REQ IN Java*/ -- a method called in the program
public void alg_REQ() {
int ct = 0;
ct = current_task;
if (ct <= NumOfTasks) {
//write received input data to output variable array elements
//this is where the problem occurs!!!!
p.setPart(PART); //set value of Part
PART_ARRAY.add(ct-1,p); //adding to arraylist
Part p = new Part(); //trying to reinitialise the object
}
}
}
Part のクラス ファイルは次のとおりです。
public class Part {
WSTRING part;
void setPart(WSTRING part) {
this.part = part;
}
WSTRING getPart() {
return part;
}
}