2016-10-24 28 views
0

我试图使用Scanner从CSV文件中读取数据,但当我尝试读取最后一个double数据并且在CSV中存在多行时收到InputMismatchException文件。我认为这是因为它正在阅读\ n作为双倍的一部分。我如何让它忽略换行符?使用Scanner从文件中读取时InputMismatchException

CSV文件

P1,25,30 
P2,10,10 

的Java

public static ArrayList<MarkEntry> readCSV(File file) { 
    ArrayList<MarkEntry> entries = new ArrayList<>(); 
    try 
    { 
     Scanner in = new Scanner(file).useDelimiter(","); 
     while (in.hasNext()) 
     { 
      String title = in.next(); 
      double mark = in.nextDouble(); 
      double outOf = in.nextDouble(); //Program Crashes here 
      entries.add(new MarkEntry(title, mark, outOf)); 
     } 
    } catch (FileNotFoundException e) 
    { 
     System.out.println("File: " + file + " not found"); 
    } 

    return entries; 
} 
+0

只是做的String []输入= in.nexLIne()分裂( “”),然后你会根据数组中的索引,您可以将数组 –

+0

的每个索引中的所有值都转换为Double或保留为String –

回答

0
while (in.hasNext()) 
    { 
     String[] inputLine = in.nextLine().split(","); 
     //check that the line contains 3 comma seperated values 
     if(inputLine.length == 3) 
     { 
      String title = inputLine[0]; //first on should be P1, p2 etc 
      //catch the exception if we are unable to parse the two expected doubls 
      try 
      { 
       double mark = Double.parseDouble(inputLine[1]); 
       double outOf = Double.parseDouble(inputLine[2]); //Program Crashes here 
       //if we got here then we have valid inputs for adding a MarkEntry 
       entries.add(new MarkEntry(title, mark, outOf)); 
      }catch(NumberFormatException er) 
      { 
       //print stack trace or something 
      } 
     } 

    } 
相关问题