此程序用于显示数组并计算1和用户输入的素数。在某些“捕获输出”的IDE中,素数列表不会“自动换行”。相反,它将显示一个非常长的数字行。这可以通过在每15个数字激活的显示代码中插入“换行”来处理。我不知道如何做到这一点,我的代码如下。
import java.util.Scanner;
import java.text.DecimalFormat;
public class Lab11avst {
public static void main(String[] args) {
// This main method needs additions for the 100 point version.
Scanner input = new Scanner(System.in);
System.out.print("Enter the primes upper bound ====>> ");
final int MAX = input.nextInt();
boolean primes[];
primes = new boolean[MAX];
computePrimes(primes);
displayPrimes(primes);
}
public static void computePrimes(boolean primes[]) {
System.out.println("\nCOMPUTING PRIME NUMBERS");
int newLine = 15;
int multiplicator = 1;
int list[] = new int[1000];
for (int k=2; k < primes.length; k++) {
primes[k] = true;
}
for (int k=2; k < primes.length; k++)
for (int x=2*k;x<primes.length;x+=k)
primes[x] = false;
}
public static void displayPrimes(boolean primes[]) {
DecimalFormat output = new DecimalFormat("0000");
System.out.println("\n\nPRIMES BETWEEN 1 AND " + primes.length);
int numPrimes = 0;
for (int k=2; k < primes.length; k++) {
if (numPrimes % 15 == 0) System.out.println("");
if (primes[k]) System.out.print(output.format(k) + " ");
++numPrimes;
}
}
}
答案 0 :(得分:0)
如果您必须继续使用当前计算素数的方法,那么您可以跟踪已打印的素数,并为每15个数字添加换行符。我建议您对displayPrimes()
方法稍作修改:
public static void displayPrimes(boolean primes[]) {
DecimalFormat output = new DecimalFormat("0000");
System.out.println("\n\nPRIMES BETWEEN 1 AND " + primes.length);
int numPrimes = 0;
for (int k = 2; k < primes.length; k++) {
if (numPrimes % 15 == 0) System.out.println("");
if (primes[k]) System.out.print(output.format(k) + " ");
++numPrimes;
}
}
我在这里使用System.out.println
,这可以保证正确的换行符将用于任何平台。
但是,解决整个问题的更好方法是仅计算实际的素数本身,然后迭代该数组并显示。使用这种方法需要完整的代码重构,可能不是您想要的,也可能对于单个问题来说太宽泛。
答案 1 :(得分:0)
让numPrimes确实计算打印的素数:
int numPrimes = 0;
for (int k = 2; k < primes.length; k++) {
if (primes[k]) {
if (numPrimes % 15 == 0) {
System.out.println();
}
System.out.print(output.format(k) + " ");
++numPrimes;
}
}
\n
在Unix / Linux和MacOS上,Windows使用\r\n
:
System.out.println("\nCOMPUTING PRIME NUMBERS");
应该是
System.out.println();
System.out.println("COMPUTING PRIME NUMBERS");