Java 显示从0到10000的200个不同素数

Java 显示从0到10000的200个不同素数,java,integer,Java,Integer,我一直在尝试打印200个素数的代码,这些素数的反面也是一个素数,并且这个数字不能是回文。我已经设置了10000个数字的限制来检查,假设其中有大约200个这样的素数。但我在第51行得到一个数组越界异常。有人能帮我把这件事弄清楚吗 import java.io.*; import java.lang.*; class Functions { int prime(int x) { int z=0; for(int i=2;i<x;i++)

我一直在尝试打印200个素数的代码,这些素数的反面也是一个素数,并且这个数字不能是回文。我已经设置了10000个数字的限制来检查,假设其中有大约200个这样的素数。但我在第51行得到一个数组越界异常。有人能帮我把这件事弄清楚吗

import java.io.*;
import java.lang.*;
class Functions
{
    int prime(int x)
    {
        int z=0;
        for(int i=2;i<x;i++)
        {
            if(x%i==0) z=1;
        }
        if(z==1) return 0;
        else return 1;
    }

    int reverse(int x)
    {
        int rev=0;
        while(x!=0)
        { rev=rev*10; rev=rev+x%10; x=x/10; }
        return rev;
    }
    int find(int x,int y[])
    {
        for(int g=0;y[g]!=0;g++)
        {
            if(x==y[g]) return 1;
        }
        return 0;
    }
}       

class Distinctp
{
    public static void main(String arg[])
    {
        Functions S=new Functions();
        int i;
        int a[]=new int[200];
        for(i=1;i<10000;i++)
        {
            if(S.prime(i)==1 && S.prime(S.reverse(i))==1)
            {
                if(i!=S.reverse(i))
                {
                    if(S.find(S.reverse(i),a)==0)
                    {
                        for(int k=0;k<199;k++)
                        {
                             if(a[k]==0) //For assigning value in the last space of the array
                            { a[k]=i; a[k+1]=0; }
                        }
                    }
                }
            }
        }
        for(i=0;i<200;i++)
        {
            System.out.println(a[i]);
        }   
    }
}
import java.io.*;
导入java.lang.*;
类函数
{
整数素数(整数x)
{
int z=0;
对于(inti=2;i当
k==199
时,该代码将导致,因为
a[k+1]
将是
a[200]
,这是超出范围的

        for(int k=0;k<200;k++)
        {
             if(a[k]==0) //For assigning value in the last space of the array
             { 
                 a[k]=i;
                 a[k+1]=0;
             }
        }
for(int k=0;k

要解决此问题,您必须像下面这样限制
for
循环的上限:

for(int k = 0; k < 199; k++) {
     if(a[k] == 0) { 
         a[k]     = i;
         a[k + 1] = 0;
     }
}
for(int k=0;k<199;k++){
如果(a[k]==0){
a[k]=i;
a[k+1]=0;
}
}

第51行是什么?脱离主题:在IDE中使用调试器。