Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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/3/arrays/14.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 - Fatal编程技术网

Java 试图将数组从最大到最小排序,但出现错误

Java 试图将数组从最大到最小排序,但出现错误,java,arrays,Java,Arrays,用户输入5个单独的数字后出现错误。 我不知道为什么会出现这个错误。Eclipse中没有显示错误,我能够运行代码 主线程java.lang.ArrayIndexOutOfBoundsException中的异常:5 在第8节,arraysLists.Main.mainMain.java:33 这是我的密码: 您正试图打印六个元素,但您的数组只有五个元素:数组的索引是从零开始的,那么五个元素的数组只有以下索引值:0、1、2、3、4 编辑 插入排序有三个错误: for (int i=0; i<s

用户输入5个单独的数字后出现错误。 我不知道为什么会出现这个错误。Eclipse中没有显示错误,我能够运行代码

主线程java.lang.ArrayIndexOutOfBoundsException中的异常:5 在第8节,arraysLists.Main.mainMain.java:33

这是我的密码:


您正试图打印六个元素,但您的数组只有五个元素:数组的索引是从零开始的,那么五个元素的数组只有以下索引值:0、1、2、3、4

编辑

插入排序有三个错误:

 for (int i=0; i<sortedArray.length; i++) {
      if (sortedArray[i] < sortedArray[i]+1) { // here you have 
                        // to compare two consecutives array's values... 
                       // in this manner this condition is always true!
            temp = sortedArray[i];
            sortedArray[i] = sortedArray[i]+1; // like previous one
            sortedArray[i+1] = temp; // here --> ArrayOutOfBound when i = 4

            flag = true;
          }
      }
也许正确的代码应该是:

 for (int i=0; i<sortedArray.length - 1; i++) {
      if (sortedArray[i] < sortedArray[i+1]) {
            temp = sortedArray[i];
            sortedArray[i] = sortedArray[i+1];
            sortedArray[i+1] = temp;

            flag = true;
          }
      }
看看这个循环:

        for (int i=0; i<sortedArray.length; i++) {
            if (sortedArray[i] < sortedArray[i]+1) {
                temp = sortedArray[i];
                sortedArray[i] = sortedArray[i]+1;
        --->>>  sortedArray[i+1] = temp;

                flag = true;
            }
        }
现在循环的i值范围是0到4。这很好。然而,在指出的行中,您将尝试索引sortedArray[i+1]。当i==4时,这将成为sortedArray[5],这超出了范围,原因与您必须删除最后一行的原因相同

另外,您还将看到SorterDarray[i]+1,它将数组的值增加1。这可能是不正确的。我想你想做的是:

        for (int i=1; i<sortedArray.length; i++) {
            if (sortedArray[i-1] < sortedArray[i]) {
                // The smaller value is in front of the bigger.  We need to swap
                temp = sortedArray[i];
                sortedArray[i] = sortedArray[i-1];
                sortedArray[i-1] = temp;

                flag = true;
            }
        }

最后一行是错误的:System.out.PrintLElement 5是+sortedArray[5]。数组是零索引的,因此sortedArray[5]是只有五个元素的数组中的第六个元素。我建议使用一个循环来打印排序数组的内容。我删除了最后一行,现在我在线程main java.lang.ArrayIndexOutOfBoundsException:5在section8.ArrayLists.main.main.java:31中得到了这个错误异常。这是否回答了您的问题?射线[i+1]=温度;您在上一次迭代中引用了4+1个元素。但是我删除了最后一行,现在我在线程main java.lang.ArrayIndexOutOfBoundsException:5的第8节中得到了这个错误异常。ArrayLists.main.main.java:31现在编辑了应答器!谢谢我很高兴你发现这个解决方案很有用。在这些情况下,您可以通过单击答案旁边的复选标记来接受解决方案,将其从灰显切换为填充。非常感谢。谢谢这同样有效,但我更喜欢另一个答案,因为我只需要修改一件事,即在sortedArray.length的末尾添加-1
        for (int i=0; i<sortedArray.length; i++) {
            if (sortedArray[i] < sortedArray[i]+1) {
                temp = sortedArray[i];
                sortedArray[i] = sortedArray[i]+1;
        --->>>  sortedArray[i+1] = temp;

                flag = true;
            }
        }
        for (int i=1; i<sortedArray.length; i++) {
            if (sortedArray[i-1] < sortedArray[i]) {
                // The smaller value is in front of the bigger.  We need to swap
                temp = sortedArray[i];
                sortedArray[i] = sortedArray[i-1];
                sortedArray[i-1] = temp;

                flag = true;
            }
        }