2016-05-16 21 views
1

Ich habe ein Array rawData[], die Zeichenfolgen aus einer CSV-Datei enthält. Was ich jetzt tun möchte, ist, alle Ganzzahlen, die als Zeichenfolgen gespeichert sind, in ein neues int [] zu kopieren.Zahlen aus String extrahieren []

Ich habe versucht, den Code unten, aber ich bekomme zwei Fehler.

  1. Fehler

  2. zum letzten Try/Catch "Exception 'java.io.IOException' wird nie in dem entsprechenden Try-Block geworfen"
  3. Wenn ich versuche, die dataList auf ein Array zu konvertieren erhalte ich: "Incompatible types. Found: 'java.lang.Object[]', required: 'int[]'" Ich weiß, dass die Arraylist irgendwie Objekte enthält, aber wie kann ich das zum Funktionieren bringen?


 public static int[] getData(){ 
       String csvFile = "C:\\Users\\Joel\\Downloads\\csgodoubleanalyze.csv"; 
       BufferedReader br = null; 
       String line = ""; 
       String cvsSplitBy = ","; 
       String[] rawData = new String[0]; 
       List<Integer> dataList = new ArrayList<Integer>(); 

       try { 

        br = new BufferedReader(new FileReader(csvFile)); 
        while ((line = br.readLine()) != null) { 

         // use comma as separator 
         rawData = line.split(cvsSplitBy); 
        } 

       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } finally { 
        if (br != null) { 
         try { 
          br.close(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 

       for (String s : rawData){ 
        try { 
         dataList.add(Integer.parseInt(s)); 
        } 
        catch (IOException e){ 
         e.printStackTrace(); 
        } 
       } 

       int[] data = dataList.toArray(); 

       return data; 

Antwort

2
  1. Integer.parseInt(s) keine IOException werfen. Es wirft einen NumberFormatException.

  2. List.toArray kann nicht eine Reihe von primitivem Typ erzeugen, so dass Sie es

zu Integer[] data = dataList.toArray(new Integer[dataList.size()]); ändern müssen werden