用户在Array中输入int,然后使用冒泡排序对数字进行排序

jpfvwuh4  于 2022-10-30  发布在  Java
关注(0)|答案(3)|浏览(137)

这是我第一次在这个博客上发帖。我是Java新手,当用户输入一组值时,我在使用冒泡排序时遇到了一个问题。下面是我的代码;然而,我更多的是寻求建议,而不是答案,因为我不会带着答案去学习语言。
谢谢你的帮助,如果我的代码有点复杂的话,再次表示抱歉。顺便说一句,我刚刚开始学习Java,所以我不能遵循非常复杂的编码建议。

import java.util.Arrays;
public class bubbleSort{

    public static void main(String[] arg){

        java.util.Scanner input = new java.util.Scanner(System.in);
        System.out.println("Enter total amount of numbers:" );

        int n = input.nextInt();

        int [] numbers = new int[n];

        System.out.println("Enter the numbers: ");
        for (int i = 0; i < n; i++) {
           numbers[i] = input.nextInt();
        }

        System.out.println(list(n));

        bubbleSort(n);

        System.out.println(list(n));    
    }

    public static void bubbleSort(int[] n){

        boolean flag;

        do{

            flag = false; 

            for(int i = 0; i < n.length - 1; i++){

                if (n[i] > n[i + 1]){

                    int temp = n[i];
                    n[i] = n[i + 1];
                    n[i + 1] = temp;

                    flag = true;
                }

            }

        } while (flag);
    }
 }
vhipe2zx

vhipe2zx1#

当您开始引用一个未定义的标识符list时,您的代码有点混乱。
我认为您需要:

System.out.println(Arrays.toString(numbers));

bubbleSort(numbers);

System.out.println(Arrays.toString(numbers));

而不是:

System.out.println(list(n));

bubbleSort(n);

System.out.println(list(n));

n是输入数字的个数,而不是您希望排序的数字。numbers包含输入数据,排序起来要合理得多。

ef1yzkbh

ef1yzkbh2#

您的程式码有问题。
System.out.println(list(n));//list(n)came out of nowhere
而且您的代码似乎只对其中一个数组元素进行了排序。
您可以尝试以下操作:

public class BubbleSort {
public static void main(String[] args){
    int[] myArray = new int[10];
    for(int i = 0; i < myArray.length; i++){
        myArray[i] = (int)(Math.random()* 100 + 1);
        System.out.print(myArray[i] + " ");
    }
    System.out.println();
    bubbleSort(myArray);
}
public static void bubbleSort(int[] array){
    for(int i = 0; i < array.length - 1; i++){
        for(int j = 0; j < array.length -1 - i; j++){
            if(array[j] > array[j+1]){
                int temp = array[j+1];
                array[j+1] = array[j];
                array[j] = temp;
            }
        }
    }
    for(int i = 0; i < array.length; i++){
        System.out.print(array[i] + " ");
    }
}
mm9b1k5b

mm9b1k5b3#

因此,让我们添加一些有关代码的更多信息。

  • 首先:使用Java Naming Convention。您的类的名称为bubbleSort,而实际上它应该是BubbleSort
  • 第二:不要创建与类同名的方法,除非它是一个constructor
  • 第三:Java是Strongly typed,这意味着(在你的情况下)如果你创建一个方法,它接收一个参数为int[] nbubbleSort(int[] n)),这意味着你只传递给它一个int数组。
  • 第四:不要使用不存在的方法(例如:list(n),至少在您的类上)

这些都是对你提供的代码的很好的建议。希望它能帮助你对Java世界有更多的了解。

相关问题