我必须在同一行上取两个整数,中间有一个空格,并且同一行上也有数组,其间有空格。
我的意见:
5 2
1 2 3 4 5
我的输出:
3 4 5 1 2
我的代码是:
Scanner s = new Scanner(System.in);
int n, d;
n = s.nextInt();
d = s.nextInt();
int a[] = new int[n];
for (int j = 0; j < n; j++) {
a[j] = s.nextInt();
}
for (int i = 0; i < a.length; i++) {
a[i] = s.nextInt();
}
for (int j = 0; j < d; j++) {
int temp = a[0];
int i;
for (i = 0; i < n - 1; i++) {
a[i] = a[i + 1];
a[n - 1] = temp;
}
for (int i = 0; i < n; i++) {
System.out.print(a[i] + " ");
}
}
答案 0 :(得分:0)
似乎当您运行代码中的输入时,这是您的输出:
3 4 1 2 2
你有这个错误输出而不是你想要的输出的原因是for for循环:
for (i = 0; i < n - 1; i++) {
a[i] = a[i + 1];
a[n - 1] = temp;
}
每次迭代,您都将临时值复制到数组的最后一个插槽中,而不是在结束时只执行一次。这将创建重复值,如输出中显示的值。要解决此问题,只需将for循环的最后一行移到for循环之外,如下所示:
for (i = 0; i < n - 1; i++) {
a[i] = a[i + 1];
}
a[n - 1] = temp;
进行此更改后,您的程序将按预期工作,除非您在数组中读取两次。我在运行代码之前实际上删除了这些代码行,所以我不确定它是否会导致你的NoSuchElement异常。摆脱这些行,你的代码将正常工作:
for (int i = 0; i < a.length; i++) {
a[i] = s.nextInt();
}