我正在尝试生成正数并将其升序排序,而不使用arrays.sort
。
该代码要求输入多少个随机数,然后将其排序并打印出来。我的代码要求输入多少,并且输出的数量比给定的少。
例如,当我要求2时,它仅打印出一个。无法找到错误或错误。
码
import java.util.*;
public class Sort {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("How many numbers do you want? ");
int howMany = in.nextInt();
int[] myArray = getRandomArray(howMany);
}
/* public static int bsearch(int[] arr, int key)
{
}*/
public static int[] getRandomArray(int howMany) {
int[] returnMe = new int[howMany]; // Assume size >= 0
Random rand = new Random();
for (int i = 0; i < howMany; i++) {
returnMe[i] = rand.nextInt(Integer.MAX_VALUE) + 1;
System.out.print(returnMe[i] + " ");
for (i = 1; i <= returnMe.length; i++) {
for (int j = i + 1; j < returnMe.length; j++) {
int tmp = 0;
if (returnMe[i] > returnMe[j]) {
tmp = returnMe[i];
returnMe[i] = returnMe[j];
returnMe[j] = tmp;
}
}
}
}
return returnMe;
}
}
最佳答案
因为您要更改循环中的i
:
for (int i = 0; i < howMany; i++) {//loop 1
...
for (i = 1; i <= returnMe.length; i++) {//loop 2
//--------------------------------^^^
//When you get out from this loop, the i is > then the original i
为避免此问题,请使用另一个变量,例如,您的代码应如下所示:
for (int i = 0; i < howMany; i++) {//loop 1
...
for (int k = 1; k <= returnMe.length; k++) {//loop 2
//-------^------^---------------------^
该程序将生成您想要的。