Java File read有什么问题?

时间:2011-11-14 00:25:10

标签: java java.util.scanner

我处理文件问题。

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)

代码有什么问题?

2 个答案:

答案 0 :(得分:3)

你在一行......在行

if (!scn.next().equals("------------------------------------")) {

如果下一个标记不是虚线,那么它就会丢失。考虑将其分配给临时变量。

在您的情况下,“IBM”丢失,comp == 7918,并且使用“Ayse”参数调用parseInt,导致运行时异常。

答案 1 :(得分:0)

这是应用程序尝试将字符串转换为其中一种数字类型时,但该字符串确实具有要转换的相应格式。

您能否进一步展示“IBM 7918 Ayse Durlanik 7600计算机”