首先这是家庭作业,所以我不是在寻找问题的答案,只是指示下一步该去哪里。我应该在这个实例3中使用用户输入(x),并根据输入返回一个看起来像这样的金字塔;
1
2 1 2
3 2 1 2 3
我试图将问题分解为从1到x和从x向下打印到1并将两者连接起来。这根本不起作用! 到目前为止,这是我的代码
import java.util.Scanner;
public class Q8 {
public static void main(String[] args)
{
Scanner user_input = new Scanner (System.in);
System.out.println("Please enter an integer 1-15:");
int input = user_input.nextInt();
for(int row=1;row<=input;row++)
{
for(int back=input;back>=2;back--)
{
System.out.print(back+" ");
}
for(int col=1;col<=row;col++)
{
System.out.print(col+" ");
}
System.out.println();
}
}
}
问题不在于打印上面打印的金字塔;
3 2 1
3 2 1 2
3 2 1 2 3
答案 0 :(得分:0)
你的问题在这里
for(int back=input;back>=2;back--)
{
System.out.print(back+" ");
}
您每次从输入开始循环并打印数字!这意味着即使在第一行,您也将打印3 2 1.您应该做的是将back
初始化为row
...虽然问题在于,在这种情况下,金字塔将左对齐。
如果您希望金字塔正确居中,则需要在所有行中的数字前填写空格(最后一行除外)。您可以使用类似的循环执行此操作,但只打印空白空间。金字塔可能仍然看起来有点奇怪,但取决于字体,因为字符不一定是相同的宽度;它应该足够你了。
答案 1 :(得分:0)
在第一行中,你应该用空格替换3和2,所以在第一个用于循环的循环中你需要使用后面和col你需要引入另一个变量来打印空格而不是后面或col数字 类似的东西:
int input = user_input.nextInt();
int i = 1;
for(int row=1;row<=input;row++)
{
for(int back=input;back>=2;back--)
{
if(back > i){
System.out.print(" ");
}else{
System.out.print(back);
}
i--;
System.out.print(" ");
}