在数组

时间:2016-10-25 16:20:14

标签: java arrays exception data-structures indexoutofboundsexception

这是我尝试执行数组左移操作的代码,它对于少数输入工作正常,但是当我增加移位量时它会产生 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)

1 个答案:

答案 0 :(得分:0)

您已在此声明中将数组的大小声明为10:int[] n = new int[10];

这意味着即使你输入x值为100,数组大小的值仍然是10.因此数组索引超出绑定异常