Java 制作图案的输出不';你没按预期来吗?

Java 制作图案的输出不';你没按预期来吗?,java,arrays,Java,Arrays,给定一个intn作为输入,其中n>=0,使用模式{1,1,2,1,2,3,…1,2,3..n}创建一个数组 我的方法 我创建了一个存在的模式,并将该模式存储在一个数组中。在这里,我不知道如何指定数组的大小。但当我设法删除某些额外的0时,我得到了空输出 public int[] create(int num) { int k=0; int x[]=new int[10]; //I was confused here how much size? for(int i=1

给定一个int
n
作为输入,其中
n>=0
,使用模式
{1,1,2,1,2,3,…1,2,3..n}
创建一个数组

我的方法

我创建了一个存在的模式,并将该模式存储在一个数组中。在这里,我不知道如何指定数组的大小。但当我设法删除某些额外的0时,我得到了空输出

public int[] create(int num) {
    int k=0;
    int x[]=new int[10];   //I was confused here how much size? 
    for(int i=1;i<=num;i++) {
        for(int j=1;j<i+1;j++) {
            x[k++]=j;
        }  
    }    
    return x;  
}  

让我们尝试计算结果数组的大小:

{1,1,2,1,2,3,...,1,2,3,..,n}
因此在末尾有
n
元素(
1,2,3,…,n
),前面是
n-1
元素(
1,2,3,…,n-1
),等等,直到有一个元素为止。所以元素的总数是
n+(n-1)+(n-2)+…+1
n*(n+1)/2

现在,让我们尝试提出一个简单的算法来生成想要的数组。如我们所见,数组由
n
子数组组成,其中第一个是
{1}
,第二个是
{1,2}
,…,最后一个是
{1,2,…,n}

  • 对于从0到
    n
    排除的每个值(这将对应于
    n
    子阵列)
  • 我们需要填充一个从1到
    n
    的值数组
示例代码:

public static void main(String[] args) {
    int n = 3;

    int[] result = new int[n*(n+1)/2];
    int index = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            result[index++] = j + 1;
        }
    }

    System.out.println(Arrays.toString(result));
}
publicstaticvoidmain(字符串[]args){
int n=3;
int[]结果=新的int[n*(n+1)/2];
int指数=0;
对于(int i=0;i对于(int j=0;j)如果要使数组变小,唯一的方法是按所需大小创建一个新数组。
{1,1,2,1,2,3,...,1,2,3,..,n}
public static void main(String[] args) {
    int n = 3;

    int[] result = new int[n*(n+1)/2];
    int index = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            result[index++] = j + 1;
        }
    }

    System.out.println(Arrays.toString(result));
}