Java 部分填充数组程序在早期运行时终止

Java 部分填充数组程序在早期运行时终止,java,arrays,runtime,Java,Arrays,Runtime,试图制作一个使用部分填充数组的程序。代码的开头处理获取用户对数组大小的输入,并让他们输入要放入数组中的值。然后我希望在输入值时对其进行排序 public static void main(String[] args) { int userInput; int[] userArray; int numElements; int index; Scanner keyboard = new Scanner(System.in); System.out

试图制作一个使用部分填充数组的程序。代码的开头处理获取用户对数组大小的输入,并让他们输入要放入数组中的值。然后我希望在输入值时对其进行排序

public static void main(String[] args) 
{
    int userInput;
    int[] userArray;
    int numElements;
    int index;
    Scanner keyboard = new Scanner(System.in);

    System.out.print("Enter number of values in array (5 to 10): ");
    userInput = keyboard.nextInt();

    while (userInput < 5 || userInput > 10)
        {
            System.out.print("Enter number of values in array (5 to 10): ");
            userInput = keyboard.nextInt();
        }

    System.out.println(); //Space, for neatness

    userArray = new int[userInput];

    for (int item: userArray)
        System.out.print(item + " ");

    System.out.print("\nEnter an integer value: ");
    userInput = keyboard.nextInt();


        int numElements = 0;
        int index = 0;
        if (numElements == userArray.length - 1)
            System.out.println("The array is full.");
        else
        {
            while (index < numElements && userArray[index] < userInput)
            {

                if (userArray[index] != 0) //Shift the array to the right, and add value at the current index as to not overwrite values.
                {
                    for (int i = numElements; i > index; i--)
                        userArray[i] = userArray[i - 1];

                    userArray[index] = userInput;
                }

                userArray[index] = userInput;
                index++;
                numElements++;

                System.out.print("Updated array: ");
                for (int item: userArray)
                    System.out.print(item + " ");

                System.out.println("\nEnter an integer value: ");
                userInput = keyboard.nextInt();
            }
        }   
}

很抱歉没有评论。

你的这部分陈述总是错误的

index < numElements 
索引

索引和数值最初都是0。因此,while循环将跳过并完成。

尝试用以下内容替换代码的最后一部分:

       int numElements = 0;

    while (numElements < userArray.length ) {

       System.out.print("\nEnter an integer value: ");
       userInput = keyboard.nextInt();  
       //insert into the first column
       userArray[0] = userInput;

        // order the table
          for (int i=0 ;i<=(userArray.length-2);i++)
                    for (int j=(userArray.length-1);i < j;j--)
                            if (userArray[j] < userArray[j-1])
                            {
                                    int x=userArray[j-1];
                                    userArray[j-1]=userArray[j];
                                    userArray[j]=x;
                            }
      numElements++;
    }

            System.out.print("Updated array: ");
            for (int item: userArray)
                System.out.print(item + " ");

            System.out.println("\nEnter an integer value: ");
            userInput = keyboard.nextInt();

        System.out.println("The array is full.");
int numElements=0;
while(numElements对于(int i=0;i请粘贴一个完整的代码。谢谢这是真的,你知道我如何使用while循环在数组中移动吗?我正在尝试查找元素的下一个位置。这是下一个元素比我要添加的元素大的位置。
       int numElements = 0;

    while (numElements < userArray.length ) {

       System.out.print("\nEnter an integer value: ");
       userInput = keyboard.nextInt();  
       //insert into the first column
       userArray[0] = userInput;

        // order the table
          for (int i=0 ;i<=(userArray.length-2);i++)
                    for (int j=(userArray.length-1);i < j;j--)
                            if (userArray[j] < userArray[j-1])
                            {
                                    int x=userArray[j-1];
                                    userArray[j-1]=userArray[j];
                                    userArray[j]=x;
                            }
      numElements++;
    }

            System.out.print("Updated array: ");
            for (int item: userArray)
                System.out.print(item + " ");

            System.out.println("\nEnter an integer value: ");
            userInput = keyboard.nextInt();

        System.out.println("The array is full.");