gpt4 book ai didi

java - 错误: missing return value in Java

转载 作者:行者123 更新时间:2023-12-01 22:48:30 24 4
gpt4 key购买 nike

所以我建立了一种查找素数的方法。它似乎只有当我强制将其标记为 true 时才有效。然而,当我按照自己的意愿保留它时,编译器不同意。

如何解决缺少返回值错误?

private static boolean isPrime( int n)
// write a loop that sets a loop variable named divisor that goes from 2 to n/2
// in the loop call isFactor to see if divisor divides n evenly
// if it does print out that divisor followed by a space (no newline)
{
for (int divisor = 2; divisor <= n; divisor++)
{
boolean prime = true;
for (int i = 2; i < divisor; i++)
{
if (isFactor(n, divisor))
{
return false;
}

}

}
return true; // i just put this here so it would compile at all
}

最佳答案

如果你的循环从不执行,你就永远不会返回任何东西,并且你告诉Java你会返回一些东西,无论你的逻辑是否做了任何事情。

将方法内部大括号之间的代码视为在程序的生命周期内可能执行也可能不执行的 block 。如果删除整个 for block ,Java 就无法使用任何有效的 return 语句来表示“是的,如果一切都失败,那么我可以使用这个值。”

也就是说,您的代码在一次运行中可能会表现如下:

public boolean isPrime(int n) {
// outer for block is removed
}

...然后在另一次运行中像这样:

public boolean isPrime(int n) {
for (int divisor = 2; divisor <= n; divisor++) {
// inner for block is removed
}
}

...依此类推,直到重建整个方法。

在上述所有代码片段中,如果外部 block 和内部 block 均未执行(以及扩展后的 if 语句),则您的程序不会在所有路径上返回任何内容。

这在 Java Language Specification 中正式指定。 ,§8.4.7:

If a method is declared to have a return type, then a compile-time error occurs if the body of the method can complete normally (§14.1).

In other words, a method with a return type must return only by using a return statement that provides a value return; it is not allowed to "drop off the end of its body".

关于java - 错误: missing return value in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25029272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com