我是Java的新手,并不是很擅长。这对我来说是一个试错过程。
我正在研究一个Java程序来输出数组中的素数。我可以让它输出素数,但我也想输出素数的数量。我试图将每个素数添加到标题为" primes"的数组列表中。然后返回" primes.size()"在我的计划结束时。它没有按预期工作。计数实际上是关闭的。当我创建一个包含5个数字的数组时,它输出3个素数,2,3和5.然后它说我有4个素数。我认为这可能是1作为素数。因为当我创建一个20的数组时,素数输出2,3,5,7,11,13,17和19.然后它表示总素数= 9.它应该是8。
这是我的代码
public class Prime {
public static void main(String[] args) {
int index = 0;
Scanner scan = new Scanner(System. in );
System.out.println("How big would you like the array? ");
int num = scan.nextInt();
int[] array = new int[num];
ArrayList < Integer > primes = new ArrayList < Integer > ();
//System.out.println("How Many threads? ");
//int nThreads = scan.nextInt(); // Create variable 'n' to handle whatever integer the user specifies. nextInt() is used for the scanner to expect and Int.
//Thread[] thread = new Thread[nThreads];
for (int n = 1; n <= array.length; n++) {
boolean prime = true;
for (int j = 2; j < n; j++) {
if (n % j == 0) {
prime = false;
break;
}
}
if (prime) {
primes.add(n);
}
if (prime && n != 1) {
System.out.println(n + "");
}
}
System.out.println("Total Prime numbers = " + primes.size());
System.out.println("Prime Numbers within " + array.length);
}
}
原谅它的邋..我实际上计划在其中添加多线程,但我想首先解决这个问题。
非常感谢任何帮助。感谢。
答案 0 :(得分:4)
您已将1
添加到素数数组中,因为您已在n
启动了1
for循环。由于最终的if
声明,您不打印它,但它位于ArrayList
。
使用n
开始n = 2
for循环。因此,您不会需要最终的if
声明,因为n
永远不会成为1
。您可以在将其添加到ArrayList
。