因此,我应该编写一个程序来检查输入的值是否可以被2、3、4、5、6、8和/或9整除。
运行此程序时出现红色错误。这是一个超出范围的索引异常,它说
at Divisibility.div2(Divisibility.java:29) at Divisibility.main(Divisibility.java:11)

我该如何解决?

import java.util.*;

public class Divisibility
{
    public static void main(String[]args)
    {
        Scanner scan=new Scanner(System.in);
        System.out.println("Enter number:  ");
        int num=scan.nextInt();
        ArrayList<Integer>di=new ArrayList<Integer>();
        ArrayList<String>a=new ArrayList<String>();
        div2(di);
        div3(di);
        div4(num);
        div5(di);
        div6(di);
        div8(num);
        while(num>0)
        {
            di.add(num%10);
            num/=10;
        }
        for(int i=0;i<di.size();i++)
        {
            a.add(""+di.get(i));
        }
    }
    public static void div2(ArrayList<Integer> arr)
    {
        if(arr.get(0)==2||arr.get(0)==4||arr.get(0)==6||arr.get(0)==8||arr.get(0)==0)
        {
            System.out.println("Divisible by 2");
        }
    }
    public static void div3(ArrayList<Integer> ar1)
    {
        int t=0;
        for(int i=0;i<ar1.size();i++)
        {
            t+=ar1.get(i);
            if(t%3==0)
            {
                System.out.println("Divisible by 3");
                i=ar1.size();
            }
        }
    }
    public static void div4(int br)
    {
        String str=Integer.toString(br);
        String str2=str.substring(str.length()-2,str.length());
        int r=Integer.parseInt(str2);
        if(r%4==0)
            System.out.print("Divisible by 4");
    }
    public static void div5(ArrayList<Integer> ah)
    {
        if(ah.get(0)==0||ah.get(0)==5)
        {
            System.out.println("Divisible by 5");
        }
    }
    public static void div6(ArrayList<Integer> q)
    {
        int l=0;
        for(int i=0;i<q.size();i++)
        {
            l+=q.get(i);
            if(l%3==0&&(q.get(0)==2||q.get(0)==4||q.get(0)==6||q.get(0)==8||q.get(0)==0))
            {
                System.out.print("Divisible by 6");
                i=q.size();
            }
        }
    }
    public static void div8(int na)
    {
        String str1=Integer.toString(na);
        String str3=str1.substring(str1.length()-3,str1.length());
        int rr=Integer.parseInt(str3);
        if(rr%8==0)
            System.out.print("Divisible by 8");
    }
    public static void div9(ArrayList<Integer> bruh)
    {
        int y=0;
        for(int i=0;i<bruh.size();i++)
        {
            y+=bruh.get(i);
            if(y%9==0)
            {
                System.out.println("Divisible by 9");
                i=bruh.size();
            }
        }
    }
}

最佳答案

调用div2方法时,尚未向其中添加任何内容

ArrayList<Integer>di=new ArrayList<Integer>();


这只是一个声明。

您不添加,直到

while(num>0)
  {
    di.add(num%10);
    num/=10;
 }


此添加需要在调用div?方法之前完成

07-25 23:57