【发布时间】:2016-01-30 03:36:48
【问题描述】:
我有这个代码:
public class TestPrimaryArray
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter 5 numbers: ");
int[] numbers = new int[5];
for(int i = 0; i < numbers.length; i++)
{
numbers[i] = scan.nextInt();
boolean isPrime = PrimeArray(numbers);
System.out.println("Is " +numbers[i]+ " a prime? " +isPrime);
}
}
public static boolean PrimeArray(int[] arr)
{
boolean prime = true;
for(int i = 1; i < arr.length; i++)
{
if(arr[i]%2 == 1)
prime = true;
else
prime = false;
}
return prime;
}
}
这个程序假设从用户那里获取输入,将其放入一个 5 的一维数组中,然后判断这些数字是否为素数。我运行我的代码,它编译了一切,但是当我看到结果时,它并没有给我正确的答案。 这是一个使用数字 11 7 3 5 20 运行的示例
Enter 5 numbers:
11 7 3 5 20
Is 11 a prime? false
Is 7 a prime? false
Is 3 a prime? false
Is 5 a prime? false
Is 20 a prime? false
假设告诉我,除了 20 之外,所有这些都是真实的。我不知道我做错了什么。我该怎么办?
【问题讨论】:
-
为什么
PrimeArray为每个输入调用一个数组?您是否注意到,您为传递的数组的每个数字设置了变量prime,并在循环后返回其值?所以很明显它只能返回数组最后一个条目的结果。所以请重新设置PrimeArray方法。 -
一些提示:你真的认为所有奇数都是素数吗?要确定一个数字是否为素数,为什么需要所有其他数字?
-
为什么每次都将整个数组作为方法
PrimeArray的输入?使用第一个 for 循环来填充数组。使用 primeArray 中的第二个 for 循环打印输出。