我的老師要求我們爲我的計算機科學課程創建一個附加素數程序。我創造了我所有的無效方法,並相信將所有的數學邏輯都弄清楚了。然而,當我嘗試參數傳遞到我的主要方法中我的方法的情況下,它給了我一個錯誤說:從main方法調用void方法,無法在void方法中傳遞參數
它無法找到該變量在這種情況下,變量「X」
package additiveprimes;
import java.util.Arrays;
import java.util.Scanner;
/**
*
* @author talarik048
*/
public class AdditivePrimes {
public static void main(String[] args){
AdditivePrimes additivePrime = new AdditivePrimes();
additivePrime.userInput(x);
additivePrime.isPrime(x);
additivePrime.numArray(x);
}
public void userInput(String x){
Scanner sc = new Scanner(System.in);
try{
System.out.println("Please enter a number: ");
x = sc.nextLine();
} catch(NumberFormatException e){
System.out.println("Error, try again: ");
x = sc.nextLine();
}
}
public void isPrime(String x){
this.userInput(x);
boolean prime = true;
int y = Integer.parseInt(x);
for(int i = 0; i < y; i++){
if(y % i == 0){
prime = false;
break;
}
if(prime){
System.out.println("Your number is prime...");
} else {
System.out.println("Your number is not prime...");
}
}
}
public void numArray(String x){
this.userInput(x);
String[] strArray = x.split("\\s+");
boolean prime = true;
int[] numbArray = new int[strArray.length];
for(int j = 0; j < strArray.length; j++){
try{
numbArray[j] = Integer.parseInt(strArray[j]);
} catch(NumberFormatException e){
System.out.println("ERROR");
}
for(int i = 0; i < numbArray.length; i++){
int sum = (Arrays.stream(numbArray).sum());
if(sum % i == 0){
prime = false;
break;
}
if(prime){
System.out.println("Your number is an additive prime...");
} else {
System.out.println("Your number is not an additive prime...");
}
}
}
}
}
「x」未定義。 –
你正在嘗試做什麼不會奏效。你應該閱讀https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value。您的userInput方法應該**返回**輸入,以便您可以使用它們。您不能將字符串傳遞給該方法,然後在userInput方法內更改該字符串,並在該方法之外產生該效果。 –
歡迎來到SO。未來請發佈可重現此問題的[MCVE]或SSCCE(http://sscce.org)。 這會增加您獲得有用答案的機會(並且可能會幫助您找到問題)。 – c0der