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 语言规范的一部分。
- 检测素数时,语句
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;
}
- 当检测回文时,而不是
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,方法执行就会结束,控制权将传递给调用方方法。
我是初学者 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 语言规范的一部分。
- 检测素数时,语句
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;
}
- 当检测回文时,而不是
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,方法执行就会结束,控制权将传递给调用方方法。