下面的程序生成10对特定大小的随机数,并将它们存储在名为test的ArrayList中 -
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;
public class randomGenerate
{
static ArrayList<String> tcase=new ArrayList<String>();
static ArrayList<int[]> test=new ArrayList<int[]>();
public static void main(String args[])
{
tcase.add("1");
tcase.add("2");
tcase.add("3");
tcase.add("4");
tcase.add("5");
tcase.add("6");
randomSelection(10,2);
for(int i=0;i<test.size();i++)
{
System.out.println(Arrays.toString(test.get(i)));
}
}
static int randomNo(int max,int min)
{
Random obj = new Random();
int n = max - min + 1;
int i = obj.nextInt(n);
int randomNum = min + i;
return randomNum;
}
static void randomSelection(int limit, int pairSize)
{
int max = Integer.parseInt(Collections.max(tcase));
int min = Integer.parseInt(Collections.min(tcase));
System.out.println(max+" "+min);
int ar[]=new int[pairSize];
for(int i = 0;i < limit;i++)
{
for(int j = 0;j < pairSize;j++)
{
ar[j]=randomNo(max,min);
System.out.print(ar[j]);
}
test.add(ar);
System.out.println();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在打印arrayList"test"的内容时,只显示最后一个值.为什么不显示所有值.
输出 - (例如)
23
65
45
63
12
23
52
52
16
12
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
Run Code Online (Sandbox Code Playgroud)
您总是在每次迭代时修改并向列表添加相同的数组.
想想这样的情况:

您需要在每次迭代时创建一个新数组:
for(int i = 0;i < limit;i++){
int ar[]=new int[pairSize]; //create a new one at each iteration
for(int j = 0;j < pairSize;j++){
ar[j]=randomNo(max,min);
System.out.print(ar[j]);
}
test.add(ar);
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |