Это кажется достаточно простым, но я получаю ошибку "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at reverse.main(reverse.java:28)"
ArrayIndexOutOfBoundsException при попытке обратного Массива
Я первоначально принимать входные данные от пользователя, чтобы записать массив, а затем я хочу, чтобы напечатать массив в обратном направлении. Я понимаю, что есть другие способы сделать это, но я в основном хочу знать, почему это не работает. Пройти через линию по линии имеет смысл?
PS. Если это не проблема, есть ли лучший способ сделать это?
import java.util.Scanner;
public class reverse {
/**
* @param args
*/
public static void main(String[] args) {
System.out.printf("Enter the number of values in array: ");
Scanner scanner = new Scanner(System.in);
int n;
n = scanner.nextInt();
double[] a1 = new double[n];
int i;
System.out.printf("Enter the value in the array: ");
for (i = 0; i < n; i++){
Scanner scanner2 = new Scanner(System.in);
a1[i] = scanner2.nextInt();
}
double j;
double k;
for (i = 0; i < n/2; i++){
j = a1[i];
k = a1[n-i]; //error line;
a1[i]=k;
a1[n-i]=j;
}
for(i = 0; i < n; i++){
System.out.println(" "+a1[i]);
}}
}
Зачем создавать новый «Сканер», когда старый уже читает «System.in», просто отлично? – 2rs2ts
Вы должны научиться форматировать свой код, он будет оказывать вам услугу в ближайшем будущем, когда ваши программы станут более сложными! – Vallentin
'k = a1 [n-i];' Когда у вас есть минусы и другие вещи, когда вы пытаетесь вычислить * индекс *, пожалуйста, проверьте ** перед **, что индекс не выходит за рамки. – Maroun