我知道如何打印金字塔图案,但是我想将它们彼此底下打印n次。我试图用for循环解决它,但是输出不是我想要的。第一个金字塔模式是好的,但其他金字塔模式是错误的。尝试使用三角形,可以提供正确的输出。两种模式有什么区别?该程序是用Java
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int height;
int stars =1;
int level;
System.out.println("Pyramid pattern.");
System.out.print("Please give the height: ");
height = sc.nextInt();
System.out.print("How many times to print: ");
level = sc.nextInt();
int szelesseg = magassag - 1;
if (magassag <= 0) {
System.out.println("A magasságnak pozitívnak kell lennie.");
}
else
{
for (int h = 0; h < szintek; h++) {
for (int i = 0; i < magassag; i++){
for (int j = szelesseg; j>i; j-- )
{
System.out.print(" ");
}
for (int k = 0; k < stars; k++){
System.out.print("*");
}
stars += 2;
System.out.println();
}
}
}
}
}
答案 0 :(得分:0)
问题似乎是for循环中打印的每一行的星数都增加了2,但是它从未重置,因此它开始的第二个三角形要比1大得多。最简单的解决方法是在最外面的for循环的开始处将其设置为1。这是我用的:
for (int h = 0; h < level; h++) {
stars = 1;
for (int i = 0; i < height; i++){
for (int j = szelesseg; j>i; j-- ) {
System.out.print(" ");
}
for (int k = 0; k < stars; k++){
System.out.print("*");
}
stars += 2;
System.out.println();
}
}
哪个输出:
*
***
*****
*
***
*****
*
***
*****
我将一些变量名翻译成英语,因为它们似乎是用英语声明的,但用匈牙利语引用(也许只是我的浏览器试图翻译)。我也将值硬编码为3,因为我不想在在线编译器上使用扫描仪。希望这会有所帮助!
编辑:如果号码无效,则帮助停止程序/ -1
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int height;
int stars =1;
int level;
System.out.println("Pyramid pattern.");
System.out.print("Please give the height: ");
height = sc.nextInt();
if (height > 0) {
System.out.print("How many times to print: ");
level = sc.nextInt();
int szelesseg = magassag - 1;
//Rest of handling code goes here
}
else {
System.out.println("A magasságnak pozitívnak kell lennie.");
}
在这里,在接收到输入后立即进行-1的检查。其余逻辑放在成功的情况下,这意味着只有在输入大于0时才会发生。在其他情况下,将显示错误消息。这意味着它将在第一个输入失败或出现另一个错误时立即打印。