我必须编写一个程序来打印出所有小于 100 的合数。我必须使用嵌套循环来完成这个程序。此外,这些值必须显示在每列 10 个数字的表格中。
我已经尝试这个程序一个多星期了,但我完全迷失了,我可以得到一些帮助吗?
我做了合数部分,但是如何将数字放入每列 10 个数字的列中?这是代码:
import java.util.Scanner;
class SwitchStatements {
public static void main(String[]Args) {
for (int i = 0; i <= 100; i++) {
for (int j = 2; j <= i/2; j++) {
if (i % j == 0) {
System.out.println(i);
break;
}
}
}
}
}
最佳答案
您的意思是每行 10 个数字(即总共 10 列),还是每列 10 个数字?
假设您将输出中的“表”表示为大致如下所示的内容(本例中有 5 列):
1 2 3 4 5
11 12 13 14 15
那么我认为你想要做的是跟踪你在这一行打印了多少个数字,并且仅在打印了 10 个数字时才使用 System.out.println
,并且System.out.print
否则:
int numbersPrinted = 0;
for (int i = 0; i <= 100; i++) {
for (int j = 2; j <= i/2; j++) {
if (i % j == 0) {
if (numbersPrinted < 9) {
System.out.print(i + " ");
numbersPrinted++;
} else {
System.out.println(i);
numbersPrinted = 0;
}
break;
}
}
}
如果您希望数字整齐排列,如果 i 小于 10(因此只有一位数字),则可以添加两个空格而不是一个空格。
如果您实际上的意思是每列需要 10 个数字,如下所示(同样,在我的示例中为 5 个):
1 2
3 4
5 6
7 8
9 10
那么您需要每行打印(数字数量/每列 10 个数字)列,因此您无法像示例中那样在嵌套循环中打印它们。相反,您需要将它们添加到 ArrayList 或类似的数组中,并稍后在单独的循环中打印它们:
ArrayList<int> numbersToPrint = new ArrayList<int>();
...
if (i % j == 0) {
numbersToPrint.add(i);
break;
}
...
int numbersPerRow = (numbersToPrint.size()/10);
int numbersPrinted = 0;
for (int i : numbersToPrint) {
if (numbersPrinted < (numbersPerRow - 1)) {
...
其余部分与上面的第一个示例相同。
关于java - 将嵌套循环复合数字放入列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072624/