1. ホーム
  2. java

[解決済み】java - 配列を処理する方法:スレッド「main」の例外 java.lang.ArrayIndexOutOfBoundsExceptionを処理します。3

2022-02-03 21:51:25

質問

私のコードでは、配列の2つの要素を比較していますが、次のような例外が発生しました。

array:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException。3 at 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]+" "); 
     }   
 }
}

解決方法は?

 for(int i=0;i<length;i++)     

であるべきです。

 for(int i=0;i<length - 1;i++)

を持つことができますので length - 1 の数だけ比較します。