我如何“换行”?

时间:2017-12-20 14:34:32

标签: java arrays arraylist

此程序用于显示数组并计算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;
        }
    }
}

2 个答案:

答案 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");