Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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 数组排序获取错误 class-arr{ //数组排序以查找最大值 公共静态void main(字符串[]args){ int[]数组={1,6,4,5,2}; int n; int i,j; 对于(i=0;i 有谁能告诉我为什么会出现运行时错误,而这种排序方法是否有效_Java_Arrays_Sorting - Fatal编程技术网

Java 数组排序获取错误 class-arr{ //数组排序以查找最大值 公共静态void main(字符串[]args){ int[]数组={1,6,4,5,2}; int n; int i,j; 对于(i=0;i 有谁能告诉我为什么会出现运行时错误,而这种排序方法是否有效

Java 数组排序获取错误 class-arr{ //数组排序以查找最大值 公共静态void main(字符串[]args){ int[]数组={1,6,4,5,2}; int n; int i,j; 对于(i=0;i 有谁能告诉我为什么会出现运行时错误,而这种排序方法是否有效,java,arrays,sorting,Java,Arrays,Sorting,由于第二个循环: class arr{ //array sorting to find maximum value public static void main(String[]args){ int[] array={1,6,4,5,2}; int n; int i,j; for( i=0;i<(array.length*2);i++){ for( j=0;j<array.length;j++){ if(arr


由于第二个循环:

class arr{
//array sorting to find maximum value
public static void main(String[]args){
    int[] array={1,6,4,5,2};
    int n;
    int i,j;
    for( i=0;i<(array.length*2);i++){
        for( j=0;j<array.length;j++){
            if(array[j]>array[j+1]){
                array[j]=array[j+1];
                array[j+1]=array[j];
            }
        }
    }
    System.out.println(array[array.length]);
}
(j=0;jarray[j+1]){ 数组[j]=数组[j+1]; 数组[j+1]=数组[j]; } }
J
在数组中循环,然后尝试将数组索引到
J+1
,数组中最后一个元素上的索引会将其推出边界,从而抛出一个
超出边界的异常

不要重新发明轮子。您可以使用数组,因此也可以使用数组帮助类。。。 :-)

(j=0;jarray[j+1]){ 数组[j]=数组[j+1]; 数组[j+1]=数组[j]; } }
  • 由于array.length=5且j
  • 交换需要另一个变量来保存数组[j],然后再对其进行更改

  • e、 g:

    intx;
    对于(j=0;jarray[j+1]){
    x=阵列[j];
    数组[j]=数组[j+1];
    数组[j+1]=x;
    }
    }
    
    气泡排序算法可以实现如下

    int x;
    
        for( j=0;j<array.length - 1;j++){
    
          if(array[j]>array[j+1]){
                        x = array[j];
                        array[j]=array[j+1];
                       array[j+1]=x;
                   }
     }
    
    公共静态无效排序(int[]arr){
    int len=arr.length;
    int k=0;
    对于(int j=0;jif(arr[i]如果出现运行时错误,则此排序方法将不起作用。@apomene此代码中有哪些更正?那么……您的运行时错误是什么?我假设您由于数组[j+1]而出现数组越界异常调用,假设当j=array.length-1时该元素不存在。您正试图通过该调用访问数组边界之外的元素。将for循环更改为jpublic static void main(String[] args) {
    
        final int[] array = { 1, 6, 4, 5, 2 };
        System.out.println("Array before sort " + Arrays.toString(array));
        Arrays.sort(array);
        System.out.println("Array before sort " + Arrays.toString(array));
    }
    
    for( j=0;j<array.length;j++){
      if(array[j]>array[j+1]){
                   array[j]=array[j+1];
                   array[j+1]=array[j];
               }
     }
    
    int x;
    
        for( j=0;j<array.length - 1;j++){
    
          if(array[j]>array[j+1]){
                        x = array[j];
                        array[j]=array[j+1];
                       array[j+1]=x;
                   }
     }
    
     public static void sort(int[] arr){
    
            int len = arr.length;
    
            int k = 0;
            for(int j = 0 ; j < len-1; j++){
            for(int i= 0+k; i < len-1; i += 2){
    
                if(arr[i] <= arr[i+1])
                    continue;
                int tmp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = tmp;
            }
            k++;
    
            if ( k % 2 == 0)
                k = 0;
        } }