Java 仅生成正随机数并对其进行排序

Java 仅生成正随机数并对其进行排序,java,arrays,Java,Arrays,我正在尝试生成正数并按升序排序,而不使用数组。sort 这段代码要求输入多少随机数,然后对它们进行排序并打印出来。我的代码要求输入多少,并打印出比给定值少一个 例如,当我要2个时,它只打印出一个。找不到错误或错误 代码 import java.util.*; public class Sort { public static void main(String args[]) { Scanner in = new Scanner(System.in);

我正在尝试生成正数并按升序排序,而不使用
数组。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;
    }
}
import java.util.*;
公共类排序{
公共静态void main(字符串参数[]){
扫描仪输入=新扫描仪(系统输入);
System.out.print(“您想要多少个数字?”);
int howMany=in.nextInt();
int[]myArray=getRandomArray(多少);
}
/*公共静态int-b搜索(int[]arr,int-key)
{
}*/
公共静态int[]getRandomArray(int多少){
int[]returnMe=new int[howMany];//假设大小>=0
Random rand=新的Random();
for(int i=0;i<多少;i++){
returnMe[i]=rand.nextInt(Integer.MAX_值)+1;
System.out.print(returnMe[i]+“”);
for(i=1;i返回我[j]){
tmp=返回我[i];
returnMe[i]=returnMe[j];
returnMe[j]=tmp;
}
}
}
}
还给我;
}
}

因为您正在更改循环中的
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
要避免此问题,请使用另一个变量,例如,您的代码应如下所示:

  for (int i = 0; i < howMany; i++) {//loop 1
    ...
    for (int k = 1; k <= returnMe.length; k++) {//loop 2
    //-------^------^---------------------^
for(int i=0;i对于(int k=1;k我尝试了
(I=0;I
对于循环二,它仍然做相同的@YCF\u Lno@karthika不要使用这个,而是使用另一个变量,检查我的编辑我已经发布了所有的解决方案好了,但是现在它没有排序,先生@YCD\u Lnow它取决于你的算法,可能我在你的程序中做了很多更改,所以仔细检查它,可能是在我使用的
k的
i
的地方