Ошибка java.lang.ArrayIndexOutOfBoundsException при попытке выполнить сортировку Bubble - PullRequest
1 голос
/ 30 марта 2012

Я пытаюсь сделать Bubble сортировать, и это мой код:

import java.util.Random;
import java.util.Scanner;

public class Main {


public static void main(String[] args) {

    double[] test = new double[5];
    double t;

    //Set random value to each of elements
    for(int i = 0;i<test.length;i++){
        test[i] = Math.round((100*Math.random()));
        System.out.println(test[i]);
    }

    //Bubble Sort
    for(int i = 0;i<test.length;i++){   

        for(int k = 0;k<test.length-1;k++){

            int x = i+1;                
            if(test[i]>test[x]){
                t = test[i];
                test[i] = test[x];
                test[x] = t;        

            }               
        }           
    }                   
  }

}

Но затем я запускаю его, он выдает ошибку:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Main.main(Main.java:24)

Ответы [ 3 ]

4 голосов
/ 30 марта 2012

i увеличивается до длины массива, а затем вы устанавливаете x, чтобы пройти один шаг вперед! Итак, вы пытаетесь получить доступ к элементу после конца массива.

Вы можете использовать i < test.length - 1 в коде сортировки или проверить иным образом, чтобы убедиться, что вы не пытаетесь поменять местами последний элемент с элементом после него.

1 голос
/ 30 марта 2012

Я думаю, что в вашем внутреннем цикле вы хотите работать с k вместо i.

0 голосов
/ 30 марта 2012

Строка "i = x + 1;" это твоя проблема. Когда x, ваш счетчик, равен 4, это переводит i в 5. Когда вы пытаетесь получить значение test [5], вы выходите за пределы массива.

...