以下是我用來從文件中讀取并將詳細信息保存在ArrayList兩個類Iphone和 中的代碼Ipad,但顯然這出現(xiàn)了問題。我為這段代碼得到的輸出是:Iphone@28d93b30 和 IndexOutOfBoundException 用于 ipads.get(0)try { fScanner = new Scanner(new File("apple.txt")); } catch (FileNotFoundException e) { System.out.println(e.toString()); } ArrayList<Iphone> iphones = new ArrayList<>(); ArrayList<Ipad> ipads = new ArrayList<>(); while(fScanner.hasNextLine()) { String line = fScanner.nextLine(); Scanner lineScanner = new Scanner(line); if(lineScanner.next().equals("IPHONE")) { String model = "IPHONE"+lineScanner.useDelimiter(",").next(); String scrSze = lineScanner.useDelimiter(",").next(); String proc = lineScanner.useDelimiter(",").next(); String simT = lineScanner.useDelimiter(",").next(); String clr = lineScanner.useDelimiter(",").next(); String rom = lineScanner.useDelimiter(",").next(); String is3dtouch = lineScanner.useDelimiter(",").next(); String pric = lineScanner.useDelimiter(",").next(); iphones.add(new Iphone(model,scrSze,proc,simT,clr,rom,is3dtouch,pric)); } else if(lineScanner.next().equals("IPAD")) { String model = "IPAD"+lineScanner.useDelimiter(",").next(); String scrSze = lineScanner.useDelimiter(",").next(); String proc = lineScanner.useDelimiter(",").next(); String iswifi = lineScanner.useDelimiter(",").next(); String clr = lineScanner.useDelimiter(",").next(); String memo = lineScanner.useDelimiter(",").next(); String pric = lineScanner.useDelimiter(",").next(); ipads.add(new Ipad(model,scrSze,proc,iswifi,clr,memo,pric)); } }我很感激對上述問題的一個很好的解釋。
1 回答
DIEA
TA貢獻1820條經(jīng)驗 獲得超3個贊
你得到Iphone@28d93b30是因為你正在打印一個 Iphone,并且你沒有覆蓋toString()Iphone 類中的方法,這意味著Object.toString()正在執(zhí)行默認方法。
你得到一個例外,因為你試圖獲得列表中的第一個 Ipad,而列表中沒有任何 Ipad。沒有,因為您調(diào)用了next()兩次(一次在第一個if條件下,一次在第二個else if條件下,因此您與“IPAD”比較的標記是該行的第二個,而不是第一個。
添加回答
舉報
0/150
提交
取消
