【发布时间】:2017-03-09 15:49:26
【问题描述】:
我的老师要求我们为我的计算机科学课创建一个加法素数程序。我已经创建了我所有的 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”未定义。
-
您尝试执行的操作将行不通。你应该阅读stackoverflow.com/questions/40480/…。您的 userInput Method 应该返回输入,以便您可以使用它们。您不能将字符串传递给该方法,然后在 userInput 方法中更改该字符串并在方法之外产生效果。
-
欢迎来到 SO。对于未来,请发布重现问题的minimal reproducible example 或 SSCCE (sscce.org)。这将增加您获得有用答案的机会(也可以帮助您找到问题)。
-
还有一些与您的问题无关的东西:您捕获 NumberFormatException 是非常无用的,因为如果您只使用 nextLine(),try 块中的任何行都不会抛出它。