return 语句在 Java 中使用

return statement in Java use

我是初学者 Java 程序员。我正在学习方法、函数和 return 语句。在解决有关在用户给定范围内查找素数和回文数的问题时,我注意到在 public static boolean prime(int n) 函数中我需要强制提及 return (true)在结束 prime(int n) 函数之前,即使我在 if 和 else 块中 returning 了正确的 true 和 false 语句以检查它是否为素数。但是在 palindrome(int n) 函数中,我被要求不要在结束范围之前放置 return 语句,即使在这里我也在 if 和 else 块中 returning 正确的 true 和 false 语句以检查是否它是否是素数。

打印给定范围内质数的代码

//printing prime numbers within a range given by the user
  import java.util.*;
  public class primeiinrange
  {
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("enter the first range");
        int a = sc.nextInt();
        System.out.println("enter the second range");
        int b = sc.nextInt();
        int c=0;
        for (int i = a; i <= b; i++) {
            if (prime(i) == true) {
                System.out.print(i + ", ");
                c++;
            }
        }
        if (c == 0) {
            System.out.println("No prime number found");
        }
    }

    public static boolean prime(int n)
    {
       if(n<=1)
       { 
           return false;
       }
       int c=2;
       while(c*c<=n)
       {
           if(n%c==0)
           { 
               return false;
           }
          c++;
       }
       if(c*c>n)
       {
           return true;
       }
       return true; //if this return statement is not given then error shown: missing return statement 
    }
}

打印给定范围内质数的代码

// palindrome numbers between a given range
import java.util.*;
public class palindrome 
{
    public static void main(String[] args) 
    {
    Scanner sc = new Scanner(System.in);
    System.out.println("enter the first range");
    int a = sc.nextInt();
    System.out.println("enter the second range");
    int b = sc.nextInt();
    int c=0;
    for (int i = a; i <= b; i++) {
        if (palindrome(i) == true) {
            System.out.print(i + ", ");
            c++;
        }
    }
    if (c == 0) {
        System.out.println("No palindrome number found");
        }
    }

public static boolean palindrome(int n)
    {
    int copy = n;
    int add = 0;
    int rem = 0;
    while (n > 0) {
        rem = n % 10;
        add = add * 10 + rem;
        n = n / 10;
    }
    if (add == copy) {
        return true;
    } else {
        return false;
    }
    //if return (true) statement is given in this line the error shown: unreachable statement
    }
}

为什么我们必须在 prime(int n) 结束范围之前强制写 return (true) 而我们不能在回文范围结束之前写 return (true)( int n)?如果有人能提供一点帮助,那就太好了。谢谢。 注意:我使用 IntelliJ Idea IDE

Java 编译器将遵守并 return 该错误,因为正如错误所述,该行将无法访问。

该行和之后的每一行都无法访问,因为您在 prime 函数中有一个“if - else”语句,就在它之前,包含两个 return 语句。这意味着该方法将 return 在任何情况下都不会执行“if - else”之后的任何语句。

这与您使用的 IDE 软件无关,但它是 Java 语言规范的一部分。

  1. 检测素数时,语句if (c * c > n)是多余的,因为只有在while (c * c <= n)循环完成后才到达这一行,也就是说,这个条件已经在while中得到验证:
public static boolean prime(int n) {
    if (n <= 1) { 
        return false;
    }
    int c = 2;
    while (c * c <= n) {
        if (n % c == 0) { 
            return false;
        }
        c++;
    }
    return true; 
}
  1. 当检测回文时,而不是 if-else 声明 return 布尔值,应该使用更清晰的形式来 return 比较结果:
public static boolean palindrome(int n) {
    int copy = n;
    int add = 0;
    int rem = 0;
    while (n > 0) {
        rem = n % 10;
        add = add * 10 + rem;
        n = n / 10;
    }
    return add == copy;
}

在您的代码中,add 和 copy 都是整数,palindrome() 方法的 return 类型是布尔标志(数据类型将保持 true 或 false),您的方法将检查传递的参数是否为回文或不。 现在当 add 等于 copy 那么你将 return 标志为 true,它表明数字实际上是回文,如果它不等于即 add 不等于 copy 那么它被认为不是回文,你需要发送flag为false,表示来电者,传过来的号码不是回文

if (add == copy) {
        return true;
    } else {
        return false;
    }

一旦您编写 return,方法执行就会结束,控制权将传递给调用方方法。