有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何打印数字模式

所以我要做的是: (显示模式)编写一个方法来显示模式,如下所示:

enter image description here

方法标题为: 公共静态void显示模式(int n)


基本上,我理解“如何”做这些事情,甚至自己编写了代码,99%的代码都是正确的。 我知道我需要做两个循环,一个打印空格,每次递减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) 个答案

  1. # 1 楼答案

    出现这种情况是因为您没有正确计算空格数:代码假设您打印的每个数字都需要在字符串的前缀部分使用一个空格。然而,当您切换到k + " "时,前缀将要求每个打印的数字有两个空格,而不是一个空格(假设是一位数)。因此,当在第二个循环中切换到k + " "时,还需要在第一个循环中切换到System.out.print(" ");(两个空格)

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