我有下面的Java代碼,我用Scanner
實現了一個readFile()
方法來逐行讀取文件,並將其分爲五個不同的對象,但是當它到達boolean
輸入它會拋出一個InputMismatchException
錯誤。什麼導致這個錯誤?我嘗試了一些不同的東西,我只是將usedelimiter(",")
添加到造成此錯誤的掃描儀,但在使用分隔符之前,它並未關閉Scanner
。我究竟做錯了什麼?當嘗試讀取布爾輸入時掃描器InputMismatchException錯誤
我的文件中的數據是這樣的:
Chevy, Malibu, 1999, 10000, true,
Ford, Focus, 2001, 5000, false,
Porshe, Carrera, 1995, 35000, true,
Honda, Insight, 2014, 18000, true,
Hyundai, Elantra, 1998, 9000, true,
end
,我的方法是這樣的:
//scan the identified file to separate the different data streams
while(scCars.hasNextLine()){
index++;
scCars.useDelimiter(", ");
if(scCars.hasNext()){
//pull out the first string and set it as this car's make
make = scCars.next();
c.setMake(make);
//pull out the second string and set it as this car's model
model = scCars.next();
c.setModel(model);
//pull out the first int and set it as this car's year
year = scCars.nextInt();
c.setYear(year);
//pull out the first double and set it as this car's price
price = scCars.nextDouble();
c.setPrice(price);
//pull out the first boolean and set it as this car's happy
happy = scCars.nextBoolean();
c.setHappy(happy);
}
//add them all to the arraylist as this car object
c.carList.add(new CarA(c.getMake(), c.getModel(), c.getYear(), c.getPrice(), c.getHappy()));
}
scCars.close();
}
下面是完整的堆棧跟蹤:
Exception in thread "AWT-EventQueue-0" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextBoolean(Scanner.java:1782)
at cara.CarGui.readFile(CarGui.java:256)
at cara.CarGui$1.actionPerformed(CarGui.java:191)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
後一個完整的例子重現問題,一起與輸入文件以及異常的堆棧跟蹤。 –