Java 如何打印数组索引中的所有检查和所有素数?

Java 如何打印数组索引中的所有检查和所有素数?,java,arrays,Java,Arrays,我有一个数组,每个索引有五(5)位数字。我想检查并打印五位数索引中的所有素数。我该怎么做 我的代码: public static void employeeID() { Scanner in = new Scanner(System.in); int emplID[] = { 43233, 71753, 97135 }; for (int i = 0; i < emplID.length; i++) { if ((emplID[i] > 10

我有一个数组,每个索引有五(5)位数字。我想检查并打印五位数索引中的所有素数。我该怎么做

我的代码:

public static void employeeID() {
    Scanner in = new Scanner(System.in);
    int emplID[] = { 43233, 71753, 97135 };

    for (int i = 0; i < emplID.length; i++) {
        if ((emplID[i] > 10000) && (emplID[i] < 99999)) {
            System.out.print(emplID[i] + " - Valid ID length\n");

        } else {
            System.out.println(emplID[i] + " - Invalid ID! ID must be Five digits!\n");
            emplID[i] = in.nextInt();
        }

        for (int j = 2; j < emplID[i]; j++) {
            if (emplID[i] % j == 0) {
                // isPrime = false;
                System.out.println(emplID[i] + " - valid prime");
            } else
                System.out.println(emplID[i] + " - not prime");
            break;
        }
    }
}
publicstaticvoid employeeID(){
扫描仪输入=新扫描仪(系统输入);
int emplID[]={4323371753971135};
for(int i=0;i10000)和&(雇员ID[i]<99999)){
System.out.print(emplID[i]+“-有效ID长度\n”);
}否则{
System.out.println(emplID[i]+“-无效ID!ID必须是五位数!\n”);
emplID[i]=in.nextInt();
}
for(int j=2;j
使用

for (int i = 0; i < emplID.length; i++) {
        if ((emplID[i] > 10000) && (emplID[i] < 99999)) {
            System.out.print(emplID[i] + " - Valid ID length\n");

        } else {
            System.out.println(emplID[i] + " - Invalid ID! ID must be Five digits!\n");
            emplID[i] = in.nextInt();
        }
        boolean isPrime = true;
        for (int j = 2; j < emplID[i]; j++) {
            if (emplID[i] % j == 0) {
                System.out.println(emplID[i] + " - not prime");
                isPrime = false;
                break;
            } 
        }
        if(isPrime) System.out.println(emplID[i] + " - valid prime");
    }
for(int i=0;i10000)和&(雇员ID[i]<99999)){
System.out.print(emplID[i]+“-有效ID长度\n”);
}否则{
System.out.println(emplID[i]+“-无效ID!ID必须是五位数!\n”);
emplID[i]=in.nextInt();
}
布尔值isPrime=true;
for(int j=2;j
您的注释行是正确的
isPrime=false。当前的问题是,在
for
循环中有
if
语句,这意味着程序在第一次迭代时确定该数字是否为素数。这意味着,除非这个数字可以被2整除,否则程序将打印“not prime”并跳出循环。您需要使用布尔标志来跟踪数字是否已声明为素数,然后仅在整个循环完成后打印。下面是如何执行此操作的示例,每个步骤都有注释:

boolean isPrime = true; //assume the number is prime to start with
for (int j = 2; j < emplID[i] / 2; j++) { //you only need to loop up to emplID[i] / 2
    if (emplID[i] % j == 0) { //if the number is divisible by j
        isPrime = false; //set the boolean flag to false (this number is not prime)
        break; //break out of the loop (we have no more testing to do)
    }
}

if (isPrime) { //now that the loop has finished, if the boolean flag is still true, the number must be prime
    System.out.println(emplID[i] + " - valid prime");
} else {
    System.out.println(emplID[i] + " - not prime"); //otherwise, it was divisible by some number in the loop, so it is not prime
}
boolean isPrime=true//假设这个数字是素数
对于(intj=2;j

值得注意的是,您的测试用例
{432337175397135}
只包含复合数字,因此您并没有真正测试您的程序。尝试添加一个类似14717的数字。

您能提供更多信息吗?它编译吗?你的代码在运行时做什么?这会带来某种例外吗?因为我们看不到谁投了你的反对票,但我认为我们应该让新加入者提出这个问题,我确实理解这些问题可能很愚蠢,但我们应该鼓励他们。实际上,你可以缩短循环的范围,因为没有一个整数可以被大于其一半的数字整除:
j
是的,你是对的,可以有更多更新,但我只是在帮助if..else循环和标记。好的,使用我的代码,它打印出“14717-有效素数”因为14717是一个素数。程序知道这一点,因为
isPrime
标志从未设置为false,因为14717不能被
j
的任何值整除。根据我和你的代码,你如何将数据存储在包括员工姓名在内的其他方法中?我不确定我是否理解你的要求。我想我需要查看一些示例代码才能清楚地了解这里的情况。也许你可以给我发送一个不起作用的示例,或者创建一个新的问题?我目前没有代码,但我正在尝试对存储了员工姓名和ID的员工数据库进行编码。然后提示用户输入员工姓名,然后在数据库中搜索并检索相应的id号,或者输入id并在数据库中搜索相应的名称。另外,我问的问题的代码是程序的id部分。你是如何存储数据库的?你是在使用类似mySQL的东西,还是只是将其写入文本文件或其他东西?如果你到目前为止有任何结构如果我能看到的话会有帮助的。