Java数组异常溢出处理


import java.util.*;
public class main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int a[]=new int[n];
    for(int i=0;i<n;i++) {
        a[i]=sc.nextInt();
    }
    int m=sc.nextInt();
    int b[]=new int[m];
    for(int i=0;i<m;i++) {
        b[i]=sc.nextInt();
    }
    
    int max1=m>n?m:n;
    int min1=m<n?m:n;
    int a1[]=new int[max1];
    int b1[]=new int[max1];
    if(m==max1) {
        for(int i=0;i<min1;i++) {
            a1[i]=a[i];b1[i]=b[i];
        }
        for(int i=min1;i<max1;i++) {
            a1[i]=a[i];b1[i]=0;
        }
    }
    if(n==max1) {
        for(int i=0;i<min1;i++) {
            a1[i]=b[i];b1[i]=a[i];
        }
        for(int i=min1;i<max1;i++) {
            a1[i]=b[i];b1[i]=0;
        }
    }
   
    int rel;
    addArray(a1,b1,max1);
    subArray(a1,b1,max1);
    mulArray(a1,b1,max1);
    divArray(a1,b1,max1);
    rel=compare(a1,b1,max1);
    System.out.println(rel);
    }

    
public static void addArray(int[]a,int b[],int max) {
    int c1[]=new int[max];
    for(int i=0;i<max;i++) {
        c1[i]=a[i]+b[i];
         System.out.println(c1[i]);
    }
     }
public static void subArray(int []a,int []b,int max){
    int c2[]=new int[max];
    for(int i=0;i<max;i++) {
        c2[i]=a[i]-b[i];
         System.out.println(c2[i]);
    }
}
public static void mulArray(int []a,int b[],int max){
    int c3[]=new int[max];
    for(int i=0;i<max;i++) {
        c3[i]=a[i]*b[i];
         System.out.println(c3[i]);
    }

}
public static void divArray(int []a,int b[],int max){
    int c4[]=new int [max];
    for(int i=0;i<max;i++) {
        if(b[i]==0)c4[i]=0;
        else c4[i]=a[i]/b[i];
         System.out.println(c4[i]);
    } 
    
}
public static int compare(int a[],int b[],int max) {
    int c5=0;
    for(int i=0;i<max;i++) {
        if(a[i]>b[i])c5++;
        else if(a[i]<b[i])c5--;
        else c5=c5;
    }
    if (c5>0)return 1;
    else if (c5<0)return -1;
    else return 0;
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at 期末复习.main.main(main.java:27)
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at 期末复习.main.main(main.java:8)

这里的提示信息是你的输入类型错误,你怎么输入的
这里两个错误,一个是下标越界,一个是输入的内容无法转换成int

ArrayIndexOutOfBoundsException: 3 索引越界了,断点排查下

a1[i]=a[i]这里可能会有越界的问题,当a数组的长度小于max1时,max1取的是m, n两个数中最大值,输入的n<m时就越界