问题是在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);
}
}
答案 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++;
还在循环之前初始化newLineCount
:int 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] + " ");
}
}
}
}