我想制作一个程序(使用循环),它会显示一个如下所示的表:
1 2 3 4 5 6 7 8 9
---------------------------------------
9: 9 * * * * * * * *
8: 8 16 * * * * * * *
7: 7 14 21 * * * * * *
6: 6 12 18 24 * * * * *
5: 5 10 15 20 25 * * * *
4: 4 8 12 16 20 24 * * *
3: 3 6 9 12 15 18 21 * *
2: 2 4 6 8 10 12 14 16 *
1: 1 2 3 4 5 6 7 8 9
我可以完全打印整个表格(也就是说,没有星号),但是我试图弄清楚如何在循环中插入星号。
到目前为止,我所写的内容如下:
public static void main(String[] args) {
System.out.print(" |");
for (int a = 1; a < 10; a++){
int ans = a;
if (ans < 10) {
System.out.print(" "+ ans + " ");
} else {
System.out.print(" " + ans + " ");
}
}System.out.println();
for (int u = 1; u < 47; u++){
System.out.print("-");
}
System.out.println();
for (int i = 9; i > 0; i --) {
System.out.print(i + " |");
for (int c = 1; c < 10; c++) {
int ans2 = i * c;
if (ans2 < 10) {
System.out.print(" "+ ans2 + " ");
} else {
System.out.print(" " + ans2 + " ");
}
}
System.out.println();
}
}
我仍然是Java的新手,如果你能帮助我,我将不胜感激。在此先感谢您的回答!
答案 0 :(得分:0)
此处您没有指定显示'*'的位置。
public static void main(String[] args) {
System.out.print(" |");
for (int a = 1; a < 10; a++){
int ans = a;
if (ans < 10) {
System.out.print(" "+ ans + " ");
} else {
System.out.print(" " + ans + " ");
}
}System.out.println();
for (int u = 1; u < 47; u++){
System.out.print("-");
}
System.out.println();
for (int i = 9; i > 0; i --) {
System.out.print(i + " |");
for (int c = 1; c < 10; c++) {
int ans2 = i * c;
if (c < (11 - i)) {
if(ans2 < 10) {
System.out.print(" " + ans2 + " ");
} else {
System.out.print(" " + ans2 + " ");
}
} else {
System.out.print(" * ");
}
}
System.out.println();
}
}
答案 1 :(得分:0)
你的节目很好。我做了一个小小的修正,它运作得很好
添加了一个小逻辑来改变你打印输出的方式(if(c&lt; = 10-i){)并希望你能理解为什么:)
PFB来源
public static void main(String[] args) {
System.out.print(" |");
for (int a = 1; a < 10; a++){
int ans = a;
if (ans < 10) {
System.out.print(" "+ ans + " ");
} else {
System.out.print(" " + ans + " ");
}
}System.out.println();
for (int u = 1; u < 47; u++){
System.out.print("-");
}
System.out.println();
for (int i = 9; i > 0; i --) {
System.out.print(i + " |");
for (int c = 1; c < 10; c++) {
int ans2 = i * c;
if(c <= 10-i){ //Tweaked the logic here
if (ans2 < 10) {
System.out.print(" "+ ans2 + " ");
} else {
System.out.print(" " + ans2 + " ");
}
}else {
System.out.print(" * ");
}
}
System.out.println();
}
}
答案 2 :(得分:0)
您的问题的简单答案是您在c + i >= 11
时打印星号。如果您向最里面的if
语句添加新条件,则可以在满足该条件时打印星号而不是c * i
。
只是提示您的代码为单位数字添加空格。您可能需要查看String.format
如何执行此操作(在您的情况下,格式&#34;%2d&#34;将自动为您添加空间)。