ArrayIndexOutOfBoundsException - ArrayLength - PullRequest
0 голосов
/ 26 января 2019

Пожалуйста, нажмите здесь, чтобы увидеть скриншот моей задачи

Здравствуйте, не могли бы вы помочь мне?Что не так с моим кодом?Я понимаю, что в длине моего массива или в моем утверждении If что-то не так, но я не смог это выяснить.

Большое спасибо!

import java.util.Scanner;

 class TripleSwapping {

 public static void main(String[] args) {

     Scanner in = new Scanner(System.in);
     System.out.println("Please enter the count of your elements: ");
     int count = in.nextInt();

     System.out.println("Your array before sorting: ");
     int A[] = new int [count];
     for (int i = 0; i < 10; i++) {
         A[i]=in.nextInt();
    }
     boolean changed =false;
     do {
         for (int i = 0; i < A.length-1; i++) {
             if (!(A[i+1]>A[i]) && !(A[i+1] > A[i+2])) {
                 int temp;
                 temp = A[i];
                 A[i]= A[i+1];
                 A[i+1] =temp;
               }
         }
         for (int i = 0; i < A.length-1; i++) {
             if (A[i] >A[i+1]) {
                  int temp;
                 temp = A[i];
                 A[i]= A[i+1];
                 A[i+1] =temp;
               changed=true;  
             }

         }


     }while(changed);

     System.out.println("Your array after swapping");

     for (int i = 0; i < A.length; i++) {
         System.out.println(A[i]);
     }

}

}

1 Ответ

0 голосов
/ 26 января 2019

Вы получаете ArrayIndexOutOfBoundsException, потому что если вы введете значение меньше 10, оно выдаст исключение.

for (int i = 0; i < 10; i++) {
    A[i]=in.nextInt();
}

Используется вместо

for (int i = 0; i < count; i++) {
    A[i]=in.nextInt();
}
...