我正在尝试在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;
}
}
答案 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。