我处理文件问题。
IBM 7918 Ayse Durlanik 7600 Computer
------------------------------------
Gama 2342 Mehmet Guzel 8300 Civil
------------------------------------
Lafarge 3242 Ahmet Bilir 4700 Chemical
------------------------------------
Intel 3255 Serhan Atmaca 9200 Electrical
------------------------------------
Bilkent 3452 Fatma Guler 2500 Computer
------------------------------------
Public 1020 Aysen Durmaz 1500 Mechanical
------------------------------------
Havelsan 2454 Sule Dilbaz 2800 Electrical
------------------------------------
Tai 3473 Fethi Oktam 3600 Computer
------------------------------------
Nurol 4973 Ayhan Ak 4100 Civil
------------------------------------
Pfizer 3000 Fusun Ot 2650 Chemical
------------------------------------
这是文本文件,我不想读这个=
"------------------------------------ "
以下是方法:
Scanner scn = null;
File fp = new File("C:/Users/Efe/Desktop/engineers.txt");
try {
scn = new Scanner(fp);
while (scn.hasNextLine()) {
{
if (!scn.next().equals("------------------------------------")) {
String comp = scn.next();
int id = Integer.parseInt(scn.next());
String name = scn.next();
String surname = scn.next();
double sal = Double.parseDouble(scn.next());
String area = scn.next();
Engineer e = new Engineer(comp, id, name, surname, sal, area);
list.add(e);
}
}
scn.close();
}
这是我在运行时获得异常的代码:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException:
For input string: "Ayse" at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
代码有什么问题?
答案 0 :(得分:3)
你在一行......在行
if (!scn.next().equals("------------------------------------")) {
如果下一个标记不是虚线,那么它就会丢失。考虑将其分配给临时变量。
在您的情况下,“IBM”丢失,comp == 7918
,并且使用“Ayse”参数调用parseInt
,导致运行时异常。
答案 1 :(得分:0)
这是应用程序尝试将字符串转换为其中一种数字类型时,但该字符串确实具有要转换的相应格式。
您能否进一步展示“IBM 7918 Ayse Durlanik 7600计算机”