Привет, пишу сортировку масcива. Выдает ошибку тут:
n = arr[i];
Вот сам код:
public class Main {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5};
int n = 0;
int i = 0;
int a = 0;
for(i = arr.length; i >= 0; i--){ // i = 4
while(i>=0) { // i=>0
a++; // 1, 2, 3 ,4
for (i = i; i<=arr.length-a; i--){ // i<= 4, 3, 2 , 1, 0
n = arr[i]; // n = 5
arr[i] = arr[i--]; // arr[4] = 4
arr[i--] = n; // arr[3] = 5
}
}
}
for(int s = 0; s<=arr.length; s++) {
System.out.println(arr[s]); // 5 4 3 2 1
}
}
вот сама ошибка:
Quote: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
понял что с индексом массива что-то не так. Так вроде последний элемент массива то есть в мое случае arr[4] = arr[arr.lenght], или это не так?
нет не так. arr.lenght
вернет длину массива, если в массиве есть хотя бы 1 элемент, то его длинна 1 а не ноль.
Соответственно в вашем случае arr.lenght
возвращает 5, а индексация массива от 0 до 4.
индекс 0, элемент # 1
индекс 1, элемент # 2
индекс 2, элемент # 3
индекс 3, элемент # 4
индекс 4, элемент # 5
максимальный индекс = 4, длина массива = 5.
Ошибка в циклах
for(i = arr.length; i >= 0; i--)
и for(int s = 0; s<=arr.length; s++)
из-за размерности массива. arr.length - длинна массива, а нумерация в массиве начинается с 0. Правильный код: for(i = arr.length - 1; i >= 0; i--)
и for(int s = 0; s < arr.length; s++)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В приложении нужно добиться того, чтобы была возможность листать "страницы", где на одной из них, выборочно, по нажатию кнопки запускался свой...
Вообщем есть приложение которое состоит из одного Activity и множества FragmentВ проекте используется MVP библиотека Moxy
Делаю небольшой калькулятор, и при тестировании заметил, что, например, при перемножении 5000 и 5000, получаю не 25000