这是我尝试执行数组左移操作的代码,它对于少数输入工作正常,但是当我增加移位量时它会产生 ArrayOutOfBoundException异常。
import java.util.Scanner;
public class ArrayShift {
public static void main(String[] args) {
int x,y;
int[] n = new int[10];
int temp = 0;
Scanner sc = new Scanner(System.in);
//x is size of array
x = sc.nextInt();
// y is the amount of shift
y = sc.nextInt();
for(int i = 0;i<x;i++)
{
n[i] = sc.nextInt();
}
//Outer forloop for shift amount = y
for(int k = 0;k<y;k++)
{
temp = n[0];
//Inner forloop for shift amount = 1
for(int i=0;i<x;i++)
{
n[i] = n[i+1];
}
n[x-1]=temp;
}
for(int i=0;i<x;i++)
System.out.print(n[i]+" ");
}
}
输出
20 10
41 73 89 7 10 1 59 58 84 77 77 97 58 1 86 58 26 10 86 51
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at ArrayShift.main(ArrayShift.java:14)
答案 0 :(得分:0)
您已在此声明中将数组的大小声明为10:int[] n = new int[10];
这意味着即使你输入x值为100,数组大小的值仍然是10.因此数组索引超出绑定异常