次のコードを含むスクリプトがあります。
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class app {
public static int p;
public static int b=0;
public static int i;
public static int add;
public static List<Integer> a = new ArrayList<Integer>();
public static List<Node> c = new ArrayList<Node>();
public static void main(String[] args){
Random rand = new Random();
for( i = 0;i<=10;i++){
int random = getRandom();
if(random!=0){
a.add(random);
}else if(random == 0){
}
}
Collections.sort(a);
System.out.println(a);
for(int z = 1;z<a.size();z++){
Node n = new Node();
Node.pos=a.get(z);
System.out.println("Node pos set to "+a.get(z));
c.add(n);
System.out.println("Node at " + n.pos);
}
System.out.println("class array length " + c.size());
System.out.println("Node at index " + 0 +" has a pos of " + c.get(0).pos);
}
public static int getRandom(){
Random randd = new Random();
int randomnum = randd.nextInt(10);
if(!a.contains(randomnum)){
return randomnum;
}else if(a.contains(randomnum)){
}
return 0;
}
}
これで達成しようとしているのはn
、作成されたノードを、すべてのノードとその位置を保持する配列に追加することです。しかし、別のノードを作成すると、その前のすべてのノードがその位置に変更されるようです。
たとえば、試してみるc.get(0).pos
と、9 の値と同じ値が返されるか、配列がいくら大きくても返されます。配列に追加されたすべてのノードがその値を保持するようにするにはどうすればよいですか? どうしたの?