如何在Java中每行输出10个整数?

时间:2018-12-07 22:41:49

标签: java split integer

问题是在5行中显示前50个质数,每行包含10个数字。我创建了一个程序来输出前50个质数,但是我不知道如何拆分它们,因此它们每行输出10个质数。我是初学者级程序员,我真的需要帮助。

public class Lab4 {
    public static void main(String[] args) {
        int i = 0;
        int num = 0;

        String primeNumbers = " ";

        for (i = 1; i <= 230; i++) 
        {
            int counter = 0;

            for (num = i; num >= 1; num--) 
            {
                if (i % num == 0) 
                {
                    counter = counter + 1;
                }
            }

            if (counter == 2) 
            {
                primeNumbers = primeNumbers + i + " ";
            }
        } 

        System.out.println(primeNumbers);
    }
}

3 个答案:

答案 0 :(得分:0)

您需要计算已经添加的项目数量,一旦拥有10个项目,您需要添加新行。我也将String更改为StringBuilder,因为在循环中串联不是很好,您可以在这里StringBuilder vs String concatenation

进行了解。
int i = 0;
int num = 0;
int lineCounter = 0;

StringBuilder primeNumbers = new StringBuilder();

for (i = 1; i <= 230; i++) {
    int counter = 0;

    for (num = i; num >= 1; num--) {
        if (i % num == 0) {
            counter = counter + 1;
        }
    }

    if (counter == 2) {
        primeNumbers.append(i).append(" ");
        lineCounter++;
    }

    if (lineCounter == 10) {
        primeNumbers.append(System.lineSeparator());
        lineCounter = 0;
    }
}

System.out.println(primeNumbers);

答案 1 :(得分:0)

只需在您的代码中此行之后的下面添加以下代码:primeNumbers = primeNumbers + i + " ";

    if (newLineCount == 10) {
      primeNumbers += '\n';
      newLineCount = 0;
    }
    newLineCount++;

还在循环之前初始化newLineCountint newLineCount = 0;

此外,如注释中所述,考虑使用StringBuilder而不是String,或者甚至更好的ArrayList来存储数字,然后可以使用方法从ArrayList打印值以您想要的任何格式化方式(带有制表符,对齐方式,新行...)

答案 2 :(得分:0)

这是适合您需求的代码。我没有更改您的代码中的任何内容,只是添加了我的以满足您的需求。

public class print_prime_numbers_10_per_line {


    public static void main(String[] args) {
        int i = 0;
        int num = 0;

        String primeNumbers = "";

        for (i = 1; i <= 230; i++) {
            int counter = 0;

            for (num = i; num >= 1; num--) {
                if (i % num == 0) {
                    counter = counter + 1;
                }
            }

            if (counter == 2) {
                primeNumbers = primeNumbers + i + " ";
            }
        }
        String[] integerStrings = primeNumbers.split(" ");

        int[] integers = new int[integerStrings.length];
        for (int x = 0; x < integers.length; x++) {
            integers[x] = Integer.valueOf(integerStrings[x]);
        }

        for (int g = 0; g < integers.length; g++) {
            if (g % 11 == 0) {
                System.out.println();
            } else {
                System.out.print(integers[g] + " ");

            }
        }
    }
}