#java
#java
Вопрос:
В моем коде я сравниваю 2 элемента массива. но я получил следующее исключение.пожалуйста, кто-нибудь может мне помочь
массив: исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 3 в Sarray.main(Sarray.java:64)
public class Sarray
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print( "Enter sorted array length:" );
int length = scan.nextInt();
int[] a = new int[length];
System.out.println("Enter integer sorted array:");
for(int i = 0;i<length;i )
{
String token = scan.next();
a[i] = Integer.parseInt(token);
}
System.out.print("Unique array:");
int[] b=new int[length];
int k=0;
for(int i=0;i<length;i )
{
//here i got Exception
if(a[i] != a[i 1])
{
b[k ]= a[i];
}
}
for(int i=0;i<k;i )
{
System.out.print(b[i] " ");
}
}
}
Ответ №1:
for(int i=0;i<length;i )
должно быть
for(int i=0;i<length - 1;i )
поскольку у вас может быть length - 1
несколько сравнений.
Ответ №2:
Когда i == length -1
i 1 == length
это незаконно. Смотрите a[i 1]
Ответ №3:
Ваше «i 1» выйдет за пределы массива, когда вы дойдете до последнего элемента.
Ответ №4:
ошибка возникает из-за того, что значение i 1 больше длины массива.
вместо
for (int i=0; i<length; i )
использовать
for (int i=0; i<length-1; i )