找不到写序列1,2,3,4,..,K,1,2,3,...,K的方法,其中K是用户输入的数字

时间:2016-10-27 10:21:29

标签: java loops sequences

这是循环。

    for(m=0; m<10; m++){
        for (i=0; i<=K; i++) {
            A[i] = i;
     }
   }

这是打印代码。

System.out.println("A:");
    for (i=0; i<20; i++) {
        System.out.printf("%.1s\t", A[i]);
        if (i==9) System.out.println();
    }

如果用户输入K为3,则结果为:

A:
0   1   2   3   0   0   0   0   0   0   
0   0   0   0   0   0   0   0   0   0

但它应该像

A:
0   1   2   3   0   1   2   3   0   1   
2   3   0   1   2   3   0   1   2   3   

5 个答案:

答案 0 :(得分:0)

System.out.println("A:");
    for (i=0; i<20; i++) {
        System.out.printf("%.1s\t", A[i]%(K+1));
        if (i==9)
          System.out.println();
    }

答案 1 :(得分:0)

你的循环错了。您只更改了阵列的第一个K + 1成员。

答案 2 :(得分:0)

索引“i”在内部循环内部,因此它从0开始,用于“m”的ech迭代。您正在覆盖数组A的前K项

也许你想要写一个像这样的代码:

ind = 0;
for(m=0; m<10; m++)
{
        for (i=0; i<=K; i++)
        {
            A[indx] = i;
            indx++;
        }
}

答案 3 :(得分:0)

您的号码顺序没问题,问题是数组A或更好,当您将数字添加到该数组时的索引。

for (i=0; i<=K; i++)
     A[i] = i;

此处,您从A开始A[0]并在A[K]结束时循环显示 for(m=0; m<10; m++) 。你这样做了10次:

% (modulo)

所以:要么你使用 int j = 0; for(int m = 0; m < 10; m++){ for(i = 0; i <= K; i++){ A[j++] = i; } } 运算符作为QBrute在他的评论中建议的,要么你发现自己是一个更全面的&#34;全球&#34;指数。例如

0

在这种情况下,您必须确保您的数组大小正确: 您想要从KA的数字的10倍,因此int[(K+1)*10]将是+1,而i=0是因为您从{{1}循环} i=K(进行K+1次迭代)

答案 4 :(得分:0)

<强>代码

    int userEnteredVal = 3;

    Integer[] smallArr = new Integer[userEnteredVal + 1];
    Integer[] outpuptArr = new Integer[20];

    for (int i = 0; i <= userEnteredVal; i++) {
        smallArr[i] = i;
    }

    for (int index = 0; index < 20; index += (userEnteredVal + 1)) {
        System.arraycopy(smallArr, 0, outpuptArr, index, smallArr.length);
    }

    for (int i = 0; i < outpuptArr.length; i++) {
        System.out.printf(outpuptArr[i] + "   ");

        if (i == 9) {
            System.out.printf("\n");
        }
    }

OutPut

0   1   2   3   0   1   2   3   0   1   
2   3   0   1   2   3   0   1   2   3   
希望这会有所帮助。