Re: 請問java.lang.IndexOutOfBoundsException?

看板java作者 (J.J.)時間11年前 (2013/04/03 19:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
這其實容易判斷阿 : : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 : : at GradeSystem.<init>(Ccc.java:21) Ccc.java的第21行 發生陣列溢出大小[6] 行號數一下就知道了 而且就算是不知道行數 既然溢出大小是[6] 那麼看一下哪一行有使用到陣列[6]就好 答案其實已經很清楚了 不過這題的錯誤關鍵是的split()的隱藏bug 不過這不是bug 定義上有講得很清楚 只是通常沒人知道 只是按照程式碼的寫法 就算是split沒出包 會導致這個錯誤的資料輸入 應該也會發生NumberFormatEx就是.......... ※ 引述《PsMonkey (痞子軍團團長)》之銘言: : ※ 引述《pugboy ()》之銘言: : : 不好意思請問各位大大 : : 我的Code原始碼如下: : : 可是卻出現錯誤訊息? : : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 : : at GradeSystem.<init>(Ccc.java:21) : : at Ccc.main(Ccc.java:51) : : 然後我就改寫String data[];成String data[] = new String[2048]; : : 小弟還是不知道問題點出在哪裡 : : 煩請大大指出錯誤點 : : 感謝萬分Orz : String foo[] = new String[2048]; : foo = wtf(); : System.out.println(foo[6]); : String[] wtf() { : return new String[5]; : } : 不知道我在講什麼,那就把你的程式碼每行都寫註解 : 我之前已經柔性警告過你了 : 結果你的發問文章始終沒有改善的跡象 : 這次我正式警告,下次這種文章(一開始根本沒半行註解)直接執行版規 4.2 : : import java.io.*; : : import java.util.*; : : class GradeSystem { //GradeSystem class : : public GradeSystem() throws IOException{ : : String data[] = new String[2048]; : : LinkedList<Grades> aGradeSystem = new LinkedList(); : : FileReader fr = new FileReader("c:\\Java\\Student.txt");//要讀取的檔案 : : BufferedReader br=new BufferedReader(fr); : : Grades aGrade = new Grades(); : : String line; : : while((line=br.readLine()) != null){ //一次讀一行 : : data = line.split(" "); : : aGrade.name=data[0]; : : aGrade.ID = data[1]; : : aGrade.lab1 = Integer.parseInt(data[2]); : : aGrade.lab2 = Integer.parseInt(data[3]); : : aGrade.lab3 = Integer.parseInt(data[4]); : : aGrade.midTerm = Integer.parseInt(data[5]); : : aGrade.finalExam = Integer.parseInt(data[6]); : : aGradeSystem.add(aGrade); //將aGrade 加到 aGradeSystem list : : } : : System.out.println("元素"); : : for(int i=0; i<=aGradeSystem.size(); i++){ : : System.out.print(aGradeSystem.get(i)); //印出List的元素 : : } : : } : : } : : class Grades { //Grade class 用來放 Student.txt的資料 : : String name, ID; : : int lab1, lab2, lab3, midTerm, finalExam, totalGrade; : : } : : public class Ccc{ //Main class : : public static void main(String args[]) throws IOException{ : : GradeSystem co = new GradeSystem(); : : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.98.124
文章代碼(AID): #1HN0qHXa (java)
文章代碼(AID): #1HN0qHXa (java)