[英]Scope of variables and Passing values in java
我正在尝试更好地在Java中使用OOP。 我在本练习中的目标是接受用户输入,并使用布尔方法检查它是否是主要输入。 我可能走错了路,但是关于我所创建内容的任何建议都将是最有益的,因为我觉得自己处在正确的轨道上。
在这个程序中,我有两个主要问题
首先,我想简单地使isPrime方法无错误。 关于我通常如何解决问题,我很难设置布尔方法。
该错误出现在最后一条语句中,因为素变量尚未初始化。 但是我想从if-else主块中验证变量prime是true还是false! 有没有办法使该值超出if-else块的范围?
public boolean isPrime(int number){
boolean prime;
if(number == 2){
System.out.println( number + " is prime");
prime = true;
} else{
for(int i = 2; i < number; i++){
if( number % i == 0){
System.out.println(number + " is composite");
prime = false;
break;
} else
System.out.println( number + " is prime");
prime = true;
}
}
return prime;
}
我的第二个大问题是如何调用isPrime方法以使用用户输入来打印所需的结果?
我已经为此工作了好几个小时,可以解决一件事,然后在某个地方弹出另一个错误。
这是整个程序。 主要方法是裸露的,因为我消除了以前使用isPrime方法的尝试。 这里是:
import java.util.*;
public class PrimeChecker{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out
.println("Enter a number to see if it is Prime or Composite: ");
int check = sc.nextInt();
sc.close();
}
public boolean isPrime(int number){
boolean prime;
if(number == 2){
System.out.println( number + " is prime");
prime = true;
} else{
for(int i = 2; i < number; i++){
if( number % i == 0){
System.out.println(number + " is composite");
prime = false;
break;
} else
System.out.println( number + " is prime");
prime = true;
}
}
return prime;
}
}
如果数字小于2会怎样? 由于代码没有进入for循环,因此未定义变量prime。 尝试默认将质数声明为true,并在发现确实不是质数时将其设置为false。
public boolean isPrime(int number){
boolean prime = true;
if(number == 2){
System.out.println( number + " is prime");
prime = true;
} else{
for(int i = 2; i < number; i++){
if( number % i == 0){
System.out.println(number + " is composite");
prime = false;
break;
}
}
}
return prime;
}
对于第二个问题,请尝试:
PrimeChecker checker = new PrimeChecker();
boolean isPrime = checker.isPrime(check);
当您在else
块中打印number + " is prime"
时,您还不知道该数字是质数。 您只知道尚未证明它是复合材料。 另外,您可能无法调用isPrime
因为您已将其设为实例方法。 它应该是static
:
public static boolean isPrime(int number){
if (number != 2) {
for (int i = 2; i < number; i++) {
if (number % i == 0) {
System.out.println(number + " is composite");
return false;
}
}
}
System.out.println(number + " is prime");
return true;
}
然后在您的main()
:
if (isPrime(check)) {
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.