Java 制作图案的输出不';你没按预期来吗?
给定一个intJava 制作图案的输出不';你没按预期来吗?,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
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));
}