2013-12-04 3 views
0

Почему мой код показывает исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 2 at arraytest.main (arraytest.java:27) всякий раз, когда я запускаю его, хотя он doesn 'Показывать какие-либо исправленные ошибки? IndexOutOfBoundsException: число изменяется в зависимости от количества введенных студентов .. ???Исключение в теме «основное» исключение: ввод

import java.util.Arrays; 
import java.util.Scanner; 


public class arraytest { 




public static void main(String[] args) { 
    int i; 
    int sum = 0; 
    int numStudents; 
    System.out.print("Enter number of students: "); 
    Scanner scanint = new Scanner (System.in);  
    numStudents = scanint.nextInt(); 
    int [] grades = new int [numStudents]; //the size we wanted 




    for (i = 0; i < grades.length; ++i) //starting from 0, not 1. 
    { 



     sum += grades[numStudents]; 

     System.out.println("Enter grade: "); 

     grades[i] = scanint.nextInt(); 
    } 
    //print the array - for checking out everyting is ok 

     sum /= numStudents ; 
    System.out.println(sum); 


} 
} 

ответ

0

Ваш для цикла неверен, измените его на:

for (i = 0; i < grades.length; ++i) //starting from 0, not 1. 
    { 
     System.out.println("Enter grade: "); 
     grades[i] = scanint.nextInt(); 
     sum += grades[i]; 
    } 

Причина Исключение: на первой итерации, она входит в контур и sum += grades[numStudents] бросает исключение, потому что numStudents является постоянным, и это длина массива, фактические элементы в массиве - от индекса 0 до (размер -1). Вы должны использовать переменную цикла i.

Смежные вопросы