这是循环。
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
答案 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
在这种情况下,您必须确保您的数组大小正确:
您想要从K
到A
的数字的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
希望这会有所帮助。