2016-12-19 2 views
0

У меня возникли проблемы с моим кодом в java. Я должен ввести «сорта» в то время как в цикле (мой выход условие -1) и поместить его в таблицу частот, проблема я получаю эту ошибку:Как заполнить таблицу частот в java

java.lang.ArrayIndexOutOfBoundsException: -1 
    at MakeUp.main(MakeUp.java:36) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at  edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267) 

Вот мой код:

class MakeUp 
{ 
public static void main (String[] args) 
{ 
    int grade[]; 
    int freq[]=new int [50]; 
    grade= new int [50]; 
    int count=0,mark; 

    System.out.println("Enter the grades of the class"); 
    System.out.println("Just enter -1 to end the input"); 


    do 
     { 
    System.out.println("Grade " +(count+1)+":"); 
    mark=In.getInt(); 
    if (mark>=0) 
    { 
    grade[count]=mark; 
    count=count+1; 
    } 
    } 
    while(mark!=-1); 


    for (int i=0; i < grade.length;i++) 
     { 
    grade[i]=mark; 
    } 

    if (mark==-1) 
    { 
    for (int i=0; i<grade.length;i++) 
    { 
    ++freq[grade[i]]; 
    } 
    System.out.println("Results"); 

    for (int i=0; i<grade.length;i++) 
    { 
    System.out.println("Grade " +(i+1) + " = " +grade[i]); 
    } 

System.out.println("Face\tFrequency\""); 
System.out.println("====================="); 
    for (int i = 0; i<freq.length; i++) 
    { 
    System.out.println((i+1)+"\t"+freq[i]); 
    } 
    } 
    } 
} 

Я не уверен, в чем проблема, и я попытался изменить строку 35, у которой есть проблема, но безрезультатно. Любая помощь будет высоко ценится. Благодаря

ответ

1

Следующий цикл заполняет grade массива с -1 значений (так как mark = -1, что условие выхода из сделаев в то время как цикл, который был выполнен ранее):

for (int i = 0; i < grade.length; i++) { 
      grade[i] = mark; 
     } 

Здесь любой grade[i] = -1, поэтому вы пытаетесь получить доступ к индексу -1 из вашего массива freqs:

++freq[grade[i]]; 
Смежные вопросы