Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java iPrime方法有死代码并且不';t返回整数_Java - Fatal编程技术网

Java iPrime方法有死代码并且不';t返回整数

Java iPrime方法有死代码并且不';t返回整数,java,Java,我想创建一个java方法来检查用户输入的整数是否为素数。然而,我得到了“死代码”和“此方法必须返回int类型的结果”。有人帮忙吗 public static int isPrime(int first) { for (int i = first - 1; i > 1; i--) if (first%i == 0){ int prime = 1; return prime; } else{ int notP

我想创建一个java方法来检查用户输入的整数是否为素数。然而,我得到了“死代码”和“此方法必须返回int类型的结果”。有人帮忙吗

  public static int isPrime(int first)
  {

    for (int i = first - 1; i > 1; i--)

      if (first%i == 0){
      int prime = 1;
      return prime;
    }

    else{
      int notPrime = 0;
      return notPrime;
    }

  }

将return语句移到for循环之外

由于您在if和else中都返回到循环中,因此您的循环将只运行一次

编辑:您还必须以不同的方式跟踪素数

public static int isPrime(int first)
  {

    for (int i = first - 1; i > 1; i--) {

       if (first%i == 0){
          return 1;
        }
    }


    return 0;


}

很抱歉在我的手机上设置im格式

如果数字的除数只有1和它本身,那么它们就是素数。简单地说,我们可以检查从1到自身(互斥)的每个整数,并测试它是否等分

例如,可能会尝试运行此算法:

//checks whether an int is prime or not.
 boolean isPrime(int n) {
     for(int i=2;i<n;i++) {
         if(n%i==0)
             return false;
     }
     return true; 
}
//检查int是否为素数。
布尔isPrime(int n){
对于(inti=2;i
intisprime(intn){

for(int i=2;i在将其复制并粘贴到编辑器中后,很明显,
i--
是导致死代码警告出现的部分。这是因为您的
for
循环将在其第一次迭代期间以任何方式返回,并且您的
i--
部分将永远不会执行(死代码)


除此之外,您的代码中还有一些其他问题在其他回答和评论中提到。

您能解释一下如果
i
等于或小于1会发生什么情况吗。提示:for循环条件从一开始就是错误的。您真的应该在
for
循环中使用大括号,并使用适当的缩进。我认为这会使它变为错误Dunes说的没错:
return
语句都放在for循环中,但是如果代码由于初始条件而从未进入循环,会发生什么情况?@Carcigenicate不带大括号的for循环实际上是有效语法。它只会在下面的语句上循环,在本例中是if-else。这里的死代码是i——因为循环最多执行一次。错误是因为for循环可能根本不执行,所以在循环之后需要返回。我理解代码的问题所在。首先,我已经格式化了所有内容,然后,我设置了条件,以便它第一次运行;然后,如果它允许。最后,我在循环之外放置了一个return语句。现在,它可以工作了。感谢您的帮助!感谢您提供的这个代码片段,它可能提供一些有限的短期帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对具有其他类似的问题(事实上,这不是很有价值,因为这是可能的最慢的素数测试之一)。请在你的答案中添加一些解释,包括你所做的假设。
 int isPrime(int n) {
   for(int i=2;i<n;i++) {
       if(n%i==0)
          return 1;
      }
     return 0;  
   }