java — Как обрабатывать массив: исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 3

#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  )