如何以 table 格式输出 ASCII 星形图案?
How to output an ASCII star patterns in a table format?
我的代码问题需要帮助。我必须编写一个程序,以 table 格式显示 星形图案 。
我并不是在寻找确切的代码,我想自己弄清楚,所以任何建议和提示都会有很大帮助。
// Pattern A Loop
for (int PatternA = 0; PatternA <= 9; PatternA++) { // outerLoop Pattern A
for (int PatternAI = 0; PatternAI <= PatternA; PatternAI++) { // Inner Loop
System.out.print("+");
}
System.out.println();
}
// Pattern B Loop
for (int PatternB = 0; PatternB <= 10; PatternB++) { // outer loop Pattern B
for (int PatternBI = 9; PatternBI >= PatternB; PatternBI--) { //Inner Loop
System.out.print("+");
}
System.out.println();
}
既然你说你不想要一个完整的解决方案,这里有一些提示。
首先,由于您的 table 必须在同一行上从 PatternAI
和 PatternBI
打印 material,因此您应该将这些循环移动到一起。这将涉及使外循环对两者都起作用。您可以在 for
循环中使用多个变量:
for (int i = 0, j = 0; i < 10 && j < 2; i++, j++)
您还需要一些方法来分离模式。您可以使用空格,但它们的数量会有所不同(实际上 +
的方式相同,因此您可以使用它)。选项卡也可以使用,而且更简单一些。但是,当行达到一定长度时,您将不得不在使用的制表符数量之间进行更改。
这就是它的全部内容。让我知道我的提示是否有帮助,或者是否有更好的表达方式。
这是完整的代码,如果您遇到困难:
// Pattern is used for both PatternA and PatternB in this outer loop
// Outer Loop
for (int Pattern = 0; Pattern <= 9; Pattern++) {
// Inner Loop PatternA
for (int PatternAI = 0; PatternAI <= Pattern; PatternAI++) {
System.out.print("+");
}
if (Pattern < 7)
System.out.print("\t\t");
else
System.out.print("\t");
// Inner Loop PatternB
for (int PatternBI = 9; PatternBI >= Pattern; PatternBI--) {
System.out.print("+");
}
System.out.println();
}
外环穿过图案的线条,内环穿过这些线条的元素。要将多行合并为一行,您必须在一个外循环中合并多个内循环。
例如,采用这些模式:
一个外循环中有多个内循环:
int n = 5;
for (int i = -n; i <= n; i++) {
System.out.print(i == -n ? "a) " : " ");
for (int j = -n; j <= n; j++) {
if (i + j <= 0)
System.out.print("*");
else
System.out.print("-");
}
System.out.print(i == -n ? " b) " : " ");
for (int j = -n; j <= n; j++) {
if (i + j >= 0)
System.out.print("*");
else
System.out.print("-");
}
System.out.print(i == -n ? " c) " : " ");
for (int j = -n; j <= n; j++) {
if (i <= j)
System.out.print("*");
else
System.out.print("-");
}
System.out.print(i == -n ? " d) " : " ");
for (int j = -n; j <= n; j++) {
if (Math.abs(i) + Math.abs(j) <= n)
System.out.print("*");
else
System.out.print("-");
}
System.out.println();
}
输出:
a) *********** b) ----------* c) *********** d) -----*-----
**********- ---------** -********** ----***----
*********-- --------*** --********* ---*****---
********--- -------**** ---******** --*******--
*******---- ------***** ----******* -*********-
******----- -----****** -----****** ***********
*****------ ----******* ------***** -*********-
****------- ---******** -------**** --*******--
***-------- --********* --------*** ---*****---
**--------- -********** ---------** ----***----
*---------- *********** ----------* -----*-----
另请参阅:How to print ASCII patterns in C# but using Java syntax?
我的代码问题需要帮助。我必须编写一个程序,以 table 格式显示 星形图案 。
我并不是在寻找确切的代码,我想自己弄清楚,所以任何建议和提示都会有很大帮助。
// Pattern A Loop
for (int PatternA = 0; PatternA <= 9; PatternA++) { // outerLoop Pattern A
for (int PatternAI = 0; PatternAI <= PatternA; PatternAI++) { // Inner Loop
System.out.print("+");
}
System.out.println();
}
// Pattern B Loop
for (int PatternB = 0; PatternB <= 10; PatternB++) { // outer loop Pattern B
for (int PatternBI = 9; PatternBI >= PatternB; PatternBI--) { //Inner Loop
System.out.print("+");
}
System.out.println();
}
既然你说你不想要一个完整的解决方案,这里有一些提示。
首先,由于您的 table 必须在同一行上从 PatternAI
和 PatternBI
打印 material,因此您应该将这些循环移动到一起。这将涉及使外循环对两者都起作用。您可以在 for
循环中使用多个变量:
for (int i = 0, j = 0; i < 10 && j < 2; i++, j++)
您还需要一些方法来分离模式。您可以使用空格,但它们的数量会有所不同(实际上 +
的方式相同,因此您可以使用它)。选项卡也可以使用,而且更简单一些。但是,当行达到一定长度时,您将不得不在使用的制表符数量之间进行更改。
这就是它的全部内容。让我知道我的提示是否有帮助,或者是否有更好的表达方式。
这是完整的代码,如果您遇到困难:
// Pattern is used for both PatternA and PatternB in this outer loop
// Outer Loop
for (int Pattern = 0; Pattern <= 9; Pattern++) {
// Inner Loop PatternA
for (int PatternAI = 0; PatternAI <= Pattern; PatternAI++) {
System.out.print("+");
}
if (Pattern < 7)
System.out.print("\t\t");
else
System.out.print("\t");
// Inner Loop PatternB
for (int PatternBI = 9; PatternBI >= Pattern; PatternBI--) {
System.out.print("+");
}
System.out.println();
}
外环穿过图案的线条,内环穿过这些线条的元素。要将多行合并为一行,您必须在一个外循环中合并多个内循环。
例如,采用这些模式:
一个外循环中有多个内循环:
int n = 5;
for (int i = -n; i <= n; i++) {
System.out.print(i == -n ? "a) " : " ");
for (int j = -n; j <= n; j++) {
if (i + j <= 0)
System.out.print("*");
else
System.out.print("-");
}
System.out.print(i == -n ? " b) " : " ");
for (int j = -n; j <= n; j++) {
if (i + j >= 0)
System.out.print("*");
else
System.out.print("-");
}
System.out.print(i == -n ? " c) " : " ");
for (int j = -n; j <= n; j++) {
if (i <= j)
System.out.print("*");
else
System.out.print("-");
}
System.out.print(i == -n ? " d) " : " ");
for (int j = -n; j <= n; j++) {
if (Math.abs(i) + Math.abs(j) <= n)
System.out.print("*");
else
System.out.print("-");
}
System.out.println();
}
输出:
a) *********** b) ----------* c) *********** d) -----*-----
**********- ---------** -********** ----***----
*********-- --------*** --********* ---*****---
********--- -------**** ---******** --*******--
*******---- ------***** ----******* -*********-
******----- -----****** -----****** ***********
*****------ ----******* ------***** -*********-
****------- ---******** -------**** --*******--
***-------- --********* --------*** ---*****---
**--------- -********** ---------** ----***----
*---------- *********** ----------* -----*-----
另请参阅:How to print ASCII patterns in C# but using Java syntax?