Java代码不工作

Java代码不工作,java,Java,我正在为一个项目Q7尝试以下代码,我应该找到第10001个素数,但它不起作用。构建成功,但没有显示任何内容。请帮助。提前感谢….不清楚您到底想做什么,所以我必须根据代码进行猜测。我假设你想找到第10001个素数 首先,在循环结束时忘记将isprime设置回true。现在是这样,它在第一次迭代后将永久为false,这意味着3是唯一检测到的素数,在这之后,您将一直循环到2^63,实际上是无限的,并最终返回0 通过移动布尔值isprime=true,您可以解决问题并更好地确定变量的范围;到循环的开始。

我正在为一个项目Q7尝试以下代码,我应该找到第10001个素数,但它不起作用。构建成功,但没有显示任何内容。请帮助。提前感谢….

不清楚您到底想做什么,所以我必须根据代码进行猜测。我假设你想找到第10001个素数

首先,在循环结束时忘记将isprime设置回true。现在是这样,它在第一次迭代后将永久为false,这意味着3是唯一检测到的素数,在这之后,您将一直循环到2^63,实际上是无限的,并最终返回0

通过移动布尔值isprime=true,您可以解决问题并更好地确定变量的范围;到循环的开始。您还可以在循环中移动prime,并将if c==10001位更改为直接返回


其次,C= C++;这是不对的。您正在递增变量,然后将其重置为旧值。你也应该做C++;或c=c+1

请定义不工作。我们中的大多数人在读心术方面都很糟糕,不知道代码应该做什么和不做什么,不应该做什么和正在做什么。另外,如果你说这个函数试图做什么,这会很有帮助。。。euler项目的问题对我来说毫无意义。你得到了什么错误,或者你希望你的答案是什么?伙计们,谢谢你们的反馈,很抱歉误解了……刚刚编辑了它。矛盾的答案应该可以修复你的错误。为了更有效地完成您的任务,我宁愿实现一个附带说明:-您不需要if isprime==true,只要isprime足够。是的,但它需要在循环的每个迭代中设置为true。哦,对不起。我的错。没有看到这是一个嵌套循环:\
public static long sum7()
{
    int c = 1;
    boolean isprime = true;
    long prime = 0;
    for (long i = 3; i <= Long.MAX_VALUE; i++)
    {
        for (long j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                isprime = false;
                break;
            }
        }
        if (isprime == true)
        {
            c++;
        }
        if (c == 10001)
        {
            prime = i;
            break;
        }
    }
    return prime;
}
static Scanner scanner1 = new Scanner(System.in);

public static void main(String[] args)
{
    System.out.println(sum7());
}