为什么我的for循环不会在我的列表中添加多个随机值?

时间:2017-11-13 07:15:09

标签: java arrays list for-loop

我正在尝试在java中创建一个冒泡排序算法,我正在尝试使用for循环创建一个包含随机整数的列表,但它只有一个值。这是代码:

public class bubbleSort {

public static void main(String[] args) 
{

    int length = getLength();

    System.out.println(length);

    List<Integer> randomList = createArray(length);

    System.out.println(randomList);

}

public static int getLength() 
{
    System.out.println("Please enter how long you want the array to be");

    Scanner reader = new Scanner(System.in);

    int length = Integer.parseInt(reader.nextLine());

    return length;
}

public static List<Integer> createArray(int length) 
{
    Random rand = new Random();

    List<Integer> randomList = new ArrayList<Integer>();

    for(int x = 0 ; x < (length + 1) ; x++);
    {
        int randomnumber = rand.nextInt((100 - 1) + 1) + 1;
        randomList.add(randomnumber);
    }

    return randomList;  
}

}

2 个答案:

答案 0 :(得分:0)

public static List<Integer> createArray(int length) 
{
   Random rand = new Random();

   List<Integer> randomList = new ArrayList<Integer>();

   for(int x = 0 ; x < (length + 1) ; x++)
   {
        int randomnumber = rand.nextInt((100 - 1) + 1) + 1;
        randomList.add(randomnumber);
   }

   return randomList;  
}

你的问题就在这里。

您应该只创建一个用于生成随机数的随机实例。

这是因为随机数来自种子值,当你没有为随机数生成器生成器提供种子时,它将使用纪元时间的种子值创建,所以你的所有数字都是同样是因为这个。

一个简单的解决方案是更新您的createArray(int length)以获取随机实例,如createArray(int length, Random random),并使用此实例生成数字。

答案 1 :(得分:0)

在你的for循环声明之后应该没有分号(;)。这就是循环在第一个循环之后保持退出的原因, 它应该是

for(int x = 0 ; x < (length + 1) ; x++)
{
    int randomnumber = rand.nextInt((100 - 1) + 1) + 1;
    randomList.add(randomnumber);
}

为什么你有一个(长度+1)..如果你想随机列表的大小是长度的大小,你应该删除+1。