2016-12-19 7 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行目を変更しようとしました。どんな助けでも大歓迎です。ここで

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

任意のgrade[i] =:ありがとう

答えて

1

次のループは(DO-しばらく前に実行されたループの終了条件であるmark = -1以来、)-1値を使用してgrade配列を埋めます-1、あなたのfreqs配列から-1のインデックスにアクセスしようとしています: