使用数组记录质数,哪里错了?

//使用数组记录质数
int z=0;//记录数组

    int[] a=new int[200];

    for (int i=101;i<150;i++){
        for (int j=2;j<i;j++)
        {
            if (i%j==0)
            {
                a[z]=i;
                z++;
            }
        }
    }
    for (int x=0;x<z;z++) {
        System.out.print(a[x]);
    }

根据我的理解,你的题目意思应该是想记录101~149中的质数,在代码中帮你写了一些基本的注释
有帮助望采纳哦

/**
 * 记录101~149中的质数
 * @Author ChenJiahao(程序员五条)
 * @Date 2021/9/23 0:26
 */
public class Test {
    public static void main(String[] args) {
        // 记录数组
        int z = 0;
        int[] a = new int[200];
        // 给外层循环打一个标志c,方便内循环直接跳到这里(第一次尝试用continue去跳到指定标志,竟然可以,那就方便多了)
        c:for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    // 能走到这里说明本次判断的i已经不是质数了(跳出内循环),使用continue(同时指定标志)跳到外循环,开始新一轮
                    continue c;
                }
            }
            // 能走到这里说明本次判断的i是质数(上述的continue已经保证了),进行赋值操作
            a[z] = i;
            z++;
        }
        // 这里应该是x++了,不是z++
        for (int x = 0; x < z; x++) {
            System.out.print(a[x] + " ");
        }
    }
}

最后
推荐用集合


for (int x=0;x<z;z++) {
        System.out.print(a[x]);
}

z++?

你少了个break

 if (i%j==0)
            {
                a[z]=i;
                z++;
               break;
          }