我的程序代码//求101 到200之间的素数,并显示出来
 package sss;
public class ss {
      public static void main(String[] args) 
    {
        int k=0;
        int[] a=new int[10];
        for(int i=101;i<=200;i++)
            for(int j=2;j<=i;j++)
            {
                if (i%j==0&j!=i) break;
                else 
                {a[k]=i;
                    k=k+1;
                }
            }
        for(int i=0;i<k;i++)
        {
            System.out.println(a[i]+"  ");
        }
          System.out.println("是素数");
    }
}
运行该代码是总是出现
java.lang.ArrayIndexOutOfBoundsException: 100
at sss.ss.main(ss.java:16)
Exception in thread "main"
提示这样的错误
希望大峡门帮帮我

解决方案 »

  1.   

    不是错误信息很清楚吗,数组问题啊,你定义乐int【10】,第11个呢就有异常乐啊
      

  2.   

    数组下标越界
    应该是 int[] a=new int[10]; 的问题
      

  3.   

    package csdn;public class ss {
      
    public boolean isSS (int input){
    for(int i = 2 ; i< input ;i++){
    for(int j = 2 ; j< input ;j++){
    if((i*j)==input)
    return false;
    }
    }
    return true ;
    }
        public static void main(String[] args) 
        {
             
            for(int i=101;i<=200;i++)
               if(new ss().isSS(i)){
                System.out.println(i+"是素数");            
               }
             
        }
    }
      

  4.   

    算法的错误,按照你的想法可以改成这样
    package sss;
    public class ss {
          public static void main(String[] args) 
        {
            int k=0;
            int[] a=new int[100];
            for(int i=101;i<=200;i++)
            {
             int j=2;
             for(j=2;i%j!=0;j++)
             {}
             if(j==i)
                 {
                 a[k]=i;
                  k++;
                 }
           
             }
            for(int i=0;i<k;i++)
            {
                System.out.println(a[i]+"  ");
            }
              System.out.println("是素数");
        }
    }
      

  5.   

    "if (i%j==0&j!=i) break; ",你们说这样的语句对吗?我看就不对,虽然我没有学过java,但是我知道这是不对的,这样还差不多"if(i%j==0&&j!=i) break;".不对这处还希望赐教!!
      

  6.   

    是数组越界的问题,因为你事先不知道101到200之间的素数有多少,所以没办法定义一个有确定元素个数的数组,即使可以定义一个元素数量很大的数组也不好,资源浪费不说,扩展性也不好,比如要修改为求从1到10000之间的素数有多少,这种情况下还得修改程序。这种情况用链表ArrayList或者Vector解决最好。 你的程序可以修改为:package sss;
    public class ss 
    {
        public static void main(String[] args) 
        {
            ArrayList a=new ArrayList();
            for(int i=101;i<=200;i++)
            {
                for(int j=2;j<=i;j++)
                {
                    if (i%j==0 && j!=i) 
                        break;
                    else 
                        a.add(String.valueOf(i));
                }
            }        
            for(int k=0;k<a.size();k++)
            {
                System.out.println((String)a.get(k)+"  ");
            }
            System.out.println("是素数");
        }
    }
      

  7.   

    public class test
    {
    private boolean isSS(int val){
    boolean bol=true;
    for(int i=2;i<val;i++){
    if(val%i!=0)
    bol=true;
    else{
    bol=false;
    break;
    }
    }
    return bol;
    } public static void main(String[] args){
    test t=new test();
    for(int j=100;j<200;j++){
    if(t.isSS(j))
    System.out.println(j+"是素数");
    }
    }
    }