如何打印数字模式

时间:2017-07-23 22:17:37

标签: java

所以我完成了这个任务: (显示模式)编写一种方法来显示模式,如下所示:

enter image description here

方法标题是: public static void displayPattern(int n)

基本上,我理解"如何"做摘录,甚至自己编码,得到99%的代码。 我知道我需要做2个循环,一个打印空白,每次下降1,另一个打印空白后的数字,然后倾斜1。

这是我的方法:

public static void printPattern(int n) {
    int m =1;
    int k=1;
    while (m-1-1 <=n) {
        int numberOfWhiteSpaces = n -1;
        for (int i = numberOfWhiteSpaces; i >= 0; i--) {
            System.out.print(" ");
        }
        for (k=m; k>0; k--) {
            System.out.print( k + "");
        }
        System.out.println();
        m++;
        n--;
    }
}

让我说我打电话

printPattern(3);

输出的唯一问题是:

   1
  21
 321

数字之间没有空格,是的,我试图改变这个:

System.out.print( k + "");

到此:

System.out.print( k + " ");

结果呢? :

enter image description here

我已经连续两个小时出现这个问题,无法做到正确。 可能需要一些帮助,谢谢你们。

1 个答案:

答案 0 :(得分:7)

这是因为您没有正确计算空格数:您的代码假定您打印的每个数字在字符串的前缀部分中需要一个空格。但是,当您切换到.dylib时,前缀将需要两个空格,而不是一个,每个数字打印(假设一位数字)。因此,当您在第二个循环中切换到k + " "时,您还需要在第一个循环中切换到k + " "(两个空格)。

这将解决单位数字的问题。推广到多位数字需要更多工作:您需要计算最后一行的位数,然后计算当前行上的位数,并打印所需数量的前缀空格以补偿差异。