我在编译时收到错误的返回语句(32)错误,我不确定原因。有什么提示吗?
我认为退货状态是我的退货声明。
import java.util.Scanner;
public class PrimeChecker
{
public static void main(String[] args)
{
int number;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a number: ");
number = keyboard.nextInt();
if (isPrime(number))
System.out.println("Your number is not prime.");
else
System.out.println("Your number is prime.");
}
public static boolean isPrime(int number)
{
for (int i = 2; i < number; i++)
{
boolean status;
if (number % i == 0)
status = true;
else
status = false;
return status;
}
}
}
答案 0 :(得分:2)
你必须在循环后添加一个return语句:
public static boolean isPrime(int number)
{
for (int i = 2; i < number; i++)
{
boolean status;
if (number % i == 0)
status = true;
else
status = false;
return status;
}
return false;
}
因为如果你的循环永远不会执行,该方法必须返回一个值。
但是你的循环在第一个值之后就结束了,因为你会在每种情况下都返回。
答案 1 :(得分:0)
最后添加一个错误的回报。因为如果你的number
小于2,那么就不会有效,所以你应该从for块中得到一个return语句
public static boolean isPrime(int number)
{
for (int i = 2; i < number; i++)
{
boolean status;
if (number % i == 0)
status = true;
else
status = false;
return status;
}
if(number==2){
return true;
}
return false
}
答案 2 :(得分:0)
您需要在函数结尾处放置return
语句。
您已在for loop
中添加了回报。
public static boolean isPrime(int number) {
for (int i = 2; i < number; i++){
boolean status;
if (number % i == 0)
status = true;
else
status = false;
return status;
}
return false;
}
答案 3 :(得分:0)
首先,此函数不是素数检查器:算法将在第一次迭代后完成。当且仅当i==number&&number%i==0
时,此函数才是素数检查器。从循环中提取status
变量并将其返回值放在函数的末尾。保留在mem中:全数扫描无效。
答案 4 :(得分:0)
正如其他人已经指出的那样,编译错误的原因是因为执行代码可能会到达函数的末尾,而没有返回语句。
另一方面,我不认为该方法的逻辑是正确的。它不应该看起来像这样吗?
public static boolean isPrime( int number )
{
if ( number < 2 ) return false;
for ( int i = 2; i < number; i++ )
{
if ( number % i == 0 ) return false;
}
return true;
}