从数组

时间:2016-09-15 12:55:37

标签: java arrays for-loop

程序应在用户输入值后打印出存储在大小为5的数组中的值。

这是我的代码:

import java.util.Scanner;

public class Arrays_Qu1 {

  public static void main(String[] args) {

    Scanner sc= new Scanner(System.in);
    int arr[]= new int [5];

    System.out.println("Enter a number");

    int i;
    for (i=0;i<arr.length;i++) {
      arr[i]=sc.nextInt();
    }

    System.out.println(arr[i]);
  }
}

输入第5个值后,程序不会终止,而是抛出:

  

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:5

2 个答案:

答案 0 :(得分:2)

因为您正在循环外打印并且它正在尝试打印超出数组范围的arr [5]。如果要打印每个元素,打印应该循环。

int i;
for (i = 0; i < arr.length; i++) {
    arr[i] = sc.nextInt();
    System.out.println(arr[i]); // to print each element
}

// value of i is now 5, so arr[i] is invalid
System.out.println(arr[i-1]); // to print last element
System.out.println(Arrays.toString(arr)); // to print whole array

答案 1 :(得分:0)

您应该访问数组的最后一个元素,如:

 System.out.println(arr[i - 1])

但我相信只打印数组的最后一个元素并不是你想要的。所以你应该移动行

 System.out.println(arr[i])

在for循环中它应该没问题。