[英]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.