我正在我的Java类中编写一个程序,我需要打印一个恒星金字塔。我的代码是:
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number between 1 and 20: ");
int value = sc.nextInt();
System.out.println("Pattern B: ");
for(int x = 1; x <= value; x++){
for(int y = value; y>=x; y-- ){
System.out.print("*");
}
System.out.print("\n");
}我的结果是打印一条由5颗星组成的线,然后是4,3,2,1(如果用户输入数字5)。我想要的是把星星都推到右边。例如:
5星线,(空间)4星线,(2空间)3星线,(3空间)2星线,(4空间)1星线
我说得通吗?
我应该引入一个if然后语句,相应地检查变量y和增量空格吗?如果我把你搞糊涂了,我很抱歉。
发布于 2013-10-31 18:08:43
您可以引入一个新的for循环,在打印星号之前打印所需的空格数:
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number between 1 and 20: ");
int value = sc.nextInt();
System.out.println("Pattern B: ");
for(int x = 1; x <= value; x++){
for(int c = value-x; c<value; c++){
System.out.print(" ");
}
for(int y = value; y>=x; y-- ){
System.out.print("*");
}
System.out.print("\n");
}发布于 2013-10-31 18:04:47
你可以做两件事之一:
x for循环中引入另一个for循环,它将循环x时间,以print x空间字符或y for循环以从1到value运行,然后在其中添加if语句以决定是打印空格还是打印*。发布于 2013-10-31 18:11:53
记住,如果你想要一个真正的金字塔,你必须跳过每两个数字。例如,如果选择5,并决定为每个数字打印一行,直到0,这是最好的方法:
*****
****
***
**
*如果你跳过,你可以得到这样的东西:
*****
***
*现在你所需要的就是看看你离你的基地有多远,得到空格的数量,除以2,你就有了之前的空格和后面的空格。
你可以试试这样的东西:
int spacing;
for(int x = 0; x < value; x=x+2){
for(int y = value; y>x; y-- ){
spacing = x/2;
for(int i = 0; i < spacing; ++i)
System.out.print(" ");
System.out.print("*");
for(int i = 0; i < spacing; ++i)
System.out.print(" ");
}
System.out.print("\n");
}https://stackoverflow.com/questions/19713602
复制相似问题