我在完成此计划时遇到困难。我正在尝试创建一个创建asteriks的程序,但然后将其变成一个三角形。
这就是我已经拥有的。
public class 12345 {
public static void main(String[] args) {
int n = 0;
int spaces = n;
int ast;
System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *");
Scanner keyboard = new Scanner(System.in);
n = keyboard.nextInt();
for (int i = 0; i < n; i++) {
ast = 2 * i + 1;
for (int j = 1; j <= spaces + ast; j++) {
if (j <= spaces)
System.out.print(' ');
else
System.out.print('*');
}
System.out.println();
spaces--;
}
}
}
它创造了星号,但我怎么能够在它们形成三角形的地方继续它们......所以它们随着它们变大,然后变小......
提前谢谢!
答案 0 :(得分:1)
尝试移动
int spaces = n;
到从标准输入读取n
的值后
这解决了你问题的一半,希望能让你走上正轨。
答案 1 :(得分:0)
我在您的代码中添加了一些内容并让它打印完整的三角形,其中扫描仪中输入的数字将是底行中打印的星号数。即如果输入是3,则三角形将是两行1-> 3;如果输入为5,那么三角形将是3行1-> 3-> 5,依此类推。
public static void main(String[] args) {
int ast;
int reverse = 1;
System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *");
Scanner keyboard = new Scanner(System.in);
int spaces = keyboard.nextInt();
for (int i = 0; i < spaces; i++) {
ast = 2 * i + 1;
for (int j = 1; j <= spaces + ast; j++) {
if (j <= spaces) {
System.out.print(' ');
} else {
System.out.print('*');}
if (j > spaces + ast) {
for (int k = 0; k < spaces-(reverse-1); k++) {
System.out.print(' ');
}
}
int k = 0;
reverse++;
}
System.out.println();
spaces--;
}
}
}
我在if-else之后添加了另一个if语句,当变量j超过第一个循环条件时触发。这会触发另一个循环,通过基本上重复你的第一个if语句使输出行对称。
我希望这有助于=)