下面是我的代码,任何人都可以帮助我,我坚持*部分
我想要像这样的输出
9
989
98789
9876789
987656789
......等等
for (int i = 1; i <= l; i++) {
for (int j = 1; j <= l - i; j++)
System.out.print(" ");
for (int j = 1; j <= (2 * i - 1); j++) {
if((l-j) < l-i){
// here System.out.print("*");
}
else
System.out.print(l - j);
}
System.out.print("\n");
}
答案 0 :(得分:1)
我最终重写了它;我无法找出你错过的print
的简明常量。如果您将i
从0
循环到l
(包括),则可以执行以下操作:
最后一行(i = l
)有0个空格,因此每行有l-i
个空格:
for(int j = 0; j < l-i; j++)
System.out.print(" ");
每一行都从l
开始,你想倒数直到你到达中心;由于当前行有l-i
个空格且中心位于l+1
(因为我包含了0
中心的行),距离i+1
,您需要输出通过l-i
包含
for(int j = l; j >= l-i; j--)
System.out.print(j);
与上面相同的循环,但相反。开始1更高,因为中心已在上面处理,你不想再输出
for(int j = l-i+1; j <= l; j++)
System.out.print(j);
答案 1 :(得分:0)
我的工作不仅仅是那一行
for (int j = 1; j <= (2 * i - 1); j++) {
if((l-j) < l-i){
// here System.out.print("*");
}
else
System.out.print(l - j);
要...
for(int j = 1; j < i; j++)
System.out.print(10-j);
System.out.println(10-i);
for(int j = 1; j < i; j++)
System.out.print(10-i+j);
答案 2 :(得分:0)
这是完成的程序。我使用“分而治之”的方法(与Michael Mrozek基本相同的想法),并使用方法使其成为极易理解的程序。希望这会有所帮助。
public class PatternPrinter {
public static void main(String[] args) {
printAllRows(9, 5);
}
public static void printAllRows(int max, int numOfRows) {
for (int i = 1; i <= numOfRows; i++) {
printRow(numOfRows - i, max, i);
System.out.print("\n");
}
}
public static void printRow(int numOfSpaces, int max, int num) {
printSpaces(numOfSpaces);
printLeftAndCenterPart(max, num);
printRightPart(max, num - 1);
}
public static void printRightPart(int max, int num) {
while(num > 0) {
System.out.print(max - num + 1);
num--;
}
}
public static void printLeftAndCenterPart(int max, int num) {
while(num > 0) {
System.out.print(max--);
num--;
}
}
public static void printSpaces(int numOfSpaces) {
while(numOfSpaces > 0) {
System.out.print(" ");
numOfSpaces--;
}
}
}