Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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_Arrays_Insertion Sort - Fatal编程技术网

Java 不显示排序数组

Java 不显示排序数组,java,arrays,insertion-sort,Java,Arrays,Insertion Sort,我创建了一个类,其中创建了一个用于选择排序的方法。我将数组作为用户输入并传入选择排序。在调用之前,它会显示值。调用后,所有元素均为0 import java.util.Scanner; public class Selectionsortarray { public static void Selectionsort(int num[]) { for (int i=0;i<num.length;i++) { for (int j=i+1;j

我创建了一个类,其中创建了一个用于选择排序的方法。我将数组作为用户输入并传入选择排序。在调用之前,它会显示值。调用后,所有元素均为0

import java.util.Scanner;
public class Selectionsortarray {

    public static void Selectionsort(int num[]) {
        for (int i=0;i<num.length;i++) {
            for (int j=i+1;j<num.length;j++) {
                if (num[j]<num[i]) {
                    int temp=num[i];
                    num[i]=num[j];
                    num[j]=temp;
                }
            }
        }
    }
    public static void main(String[] args) {
        Scanner k = new Scanner(System.in);
        int a[] = new int[40];
        System.out.println("Enter the no. of elements");
        int n= k.nextInt();
        System.out.println("Enter the array");
        for (int i=0;i<n;i++) {
            a[i] = k.nextInt();
        }
        System.out.println("The array before sorting is");
        for (int i=0;i<n;i++) {
            System.out.println(a[i]);
        }
        Selectionsort(a);
        System.out.println("The array is");
        for (int i=0;i<n;i++) {
            System.out.println(a[i]);
        }
        k.close();

    }
}
import java.util.Scanner;
公共类Selectionsortarray{
公共静态void Selectionsort(int num[]){

对于(int i=0;i您正在创建一个包含40个元素的数组,并对其进行排序,而不是创建一个大小为
n
(用户提供的输入)的数组

这将导致数组的开头包含由您提供的
n
元素,尾部为全零(
40-n
元素)。对数组排序时,这些零被推到开头,打印时,仅打印它们

最简单的修复方法是更改行:

int a[] = new int[40];
进入

并在扫描阵列长度后按下它



还要注意,如果您尝试向数组中插入40多个元素(
n>40
)在当前代码中,它将崩溃。

您的程序应该工作得很好。这里的问题是,您定义了40个元素的数组,默认情况下使用0初始化,post表示您覆盖了用户输入的数字,在post排序结束时,您只需按升序打印n个元素,这将打印所有的零

您需要删除此行:

int a[] = new int[40];
然后将其粘贴到下面
int n=k.nextInt();
like

int a[] = new int[n];
它应该会起作用


这将节省空间并加快排序速度,因为您将减少迭代次数。

a数组有40个位置,大于0的数字位于数组末尾,您只显示有序数组的前n个元素,它们都是0

int a[] = new int[n];