Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中不使用内置排序方法动态排序用户输入_Java_Sorting_For Loop_Bubble Sort - Fatal编程技术网

在Java中不使用内置排序方法动态排序用户输入

在Java中不使用内置排序方法动态排序用户输入,java,sorting,for-loop,bubble-sort,Java,Sorting,For Loop,Bubble Sort,我正在尝试对一些由空格分隔的用户输入的整数进行排序 输入:4 2 1 5 9 --预期产出:1 2 4 5 9 我不知道在用户在循环中按enter键(其中I

我正在尝试对一些由空格分隔的用户输入的整数进行排序

输入:4 2 1 5 9 --预期产出:1 2 4 5 9

我不知道在用户在循环中按enter键(其中I
 class javasort {
    public static void main(String[] args) {
    int num, i, j, temp;
    Scanner input = new Scanner(System.in);

    // System.out.println("Enter the number of integers to sort:");
    // num = input.nextInt();

    num = 5; // <-- the user input should be dynamic

    int array[] = new int[num];

    System.out.println("Enter integers: ");

    for (i = 0; i < num; i++)

        array[i] = Integer.parseInt(input.next());
        num = i; // make array as big as input ?

    for (i = 0; i < (num - 1); i++) {
        for (j = 0; j < num - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }

    System.out.println("Sorted list of integers:");

    for (i = 0; i < num; i++)
        System.out.println(array[i]);
}}
类javasort{ 公共静态void main(字符串[]args){ int num,i,j,temp; 扫描仪输入=新扫描仪(System.in); //System.out.println(“输入要排序的整数数:”); //num=input.nextInt(); num=5;//数组[j+1]){ 温度=阵列[j]; 数组[j]=数组[j+1]; 阵列[j+1]=温度; } } } System.out.println(“整数排序列表:”); 对于(i=0;i您的代码几乎是正确的,然后删除了最好的提示。像这样使用
Scanner.nextInt()

num = input.nextInt();          // <-- get the count.
int array[] = new int[num];
System.out.println("Enter integers: ");
for (i = 0; i < num; i++) {     // <-- don't rely on indentation for flow control.
    array[i] = input.nextInt(); // <-- get a number "num" times.
}

num=input.nextInt();// 如此简单,却又如此高效:

Arrays.sort(array);

您可以使用
气泡排序
算法。它在最坏的情况下运行o(n^2)。不必把代码放在这里,你可以做到。只需要不到20行。

您缺少一对花括号。第一个循环的主体由一条且仅由一条语句组成。建议:对于
if
语句和循环体,请始终使用大括号。如果这是预期的循环,则它是可疑的。如果
num=i
,然后
i==num
,因此
i
为false,循环将在一次迭代后结束。行
num=i
num
是5,你想从输入中读取5个数字。如果你想在每次“找到”一个新数字时更改数组的大小,那么仅仅更改
num
是无法实现的。@RudyVelthuis数组大小应该是动态的。我投了5分,因为我无法让它以其他方式工作。请看我之前的评论。这不是更改数组大小的方法。你什么时候停止阅读输入?我明白。但我希望输入和输出像这样:4 2 1 5 9——预期输出:1 2 4 5 9,而不是在每个数字后都按enter键。第一个输入必须是数字计数。所以,54219应该做。是的,我知道。但我正在寻找一个动态数组。用户不必指定需要输入的长度。此修复程序不适用于5 4或55 77 11如果Java数组具有固定长度,则可以使用
集合
;或者,您必须复制数组以添加新元素。此外,您还需要某种方式来指示输入已完成。你不使用内置方法的要求将使这变得非常困难。祝你好运!我不能使用数组.sort。这就是我不使用内置库的意思。因为:Scanner、System和Integer都是内置库