2016-12-17 10 views
0

私はcsvファイルからデータを受け取るプロジェクトを持っています。すでに各列を文字列配列に渡しています。その配列の内容を取得し、データを自分自身の配列に入れようとすると、列のタイトルが読み込まれているため、ファイルを編集できません(プロジェクトのreq)。Java:配列エラーへのcsvファイルの読み込み

Crime.java

package crimestat; 

import java.io.*; 
import java.util.*; 

public class Crime { 

    private String Label[]; 
    private int Year[]; 
    private int Population[]; 
    private int Violent[]; 
    private double Violent_Rate[]; 
    private int Murder[]; 
    private double Murder_Rate[]; 
    private int Rape[]; 
    private double Rape_Rate[]; 
    private int Robery[]; 
    private double Robery_Rate[]; 
    private int Assault[]; 
    private double Assault_Rate[]; 
    private int Property[]; 
    private double Property_Rate[]; 
    private int Burglary[]; 
    private double Burglary_Rate[]; 
    private int Larceny[]; 
    private double Larceny_Rate[]; 
    private int Vehicle[]; 
    private double Vehicle_Rate[]; 

    public Crime() { 
     Label = null; 
     Year = null; 
     Population = null; 
     Violent = null; 
     Violent_Rate = null; 
     Murder = null; 
     Murder_Rate = null; 
     Rape = null; 
     Rape_Rate = null; 
     Robery = null; 
     Robery_Rate = null; 
     Assault = null; 
     Assault_Rate = null; 
     Property = null; 
     Property_Rate = null; 
     Burglary = null; 
     Burglary_Rate = null; 
     Larceny = null; 
     Larceny_Rate = null; 
     Vehicle = null; 
     Vehicle_Rate = null; 
    } 

    public String get_Label(int i){ 
     return Label[i]; 
    } 

    public int get_Year(int i){ 
     return Year[i]; 
    } 

    public void set_Label(String[] Label){ 
     this.Label = Label; 
    } 

    public void set_Year(int i, Crime crime){ 
     this.Year[i] = Integer.parseInt(crime.get_Label(0)); 
    } 

} 

testCrime.java

package crimestat; 

import java.io.*; 
import java.util.*; 

public class testCrime { 

    static Crime obj = new Crime(); 

    public static void main(String[] args) throws IOException { 
     Scanner file = null; 
     int n=0; 
     try { 
      file = new Scanner(new BufferedReader(new FileReader("Crime.csv"))); 
      while (file.hasNextLine()) { 
       obj.set_Label(file.nextLine().split(",")); 
       obj.set_Year(n,obj); 
       System.out.println(obj.get_Year(n)); 
      } 
     } 
     catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

エラー

Exception in thread "main" java.lang.NumberFormatException: For input string: "Year" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at crimestat.Crime.set_Year(Crime.java:69) 
at crimestat.testCrime.main(testCrime.java:20) 

enter image description here

答えて

0

それはFi回線を編集する必要はありませんle最初の列タイトルです。 2列目のデータを保存することができます。

として以下のコード:。

file = new Scanner(new BufferedReader(new FileReader("Crime.csv"))); 

    while(file.hasNextLine()){ 
     String curLine = file.nextLine(); 
     obj.set_Label(curLine.substring(curLine.indexOf(",")+1).split(","));//filter the first column 
     obj.set_Year(n,obj); 

     System.out.println(obj.get_Year(n)); 

    } 
} 
catch(IOException ex){ 
    ex.printStackTrace(); 
} 

//update set_Label method 
public void set_Label(String[] Label){ 
    this.Label = new int[Label.length]; 
    for(int i = 0; i < Label.length;i++){ 
     this.Label[i] = Integer.valueOf(Label[i]); 
    } 
} 
+0

イムあなたが誤解している必要があります申し訳ありませんが、 –

+0

イムあなたは、誤解している必要があります申し訳ありませんが私がしなければ「obj.set_Label(file.nextLine()スプリット( "") ); System.out.println(obj.get_Label(0)); '私は年、1994年、1995年の出力を取得します... –

+0

しかし、エラーがスローされる文字列であるため、String [0]をint Year [n]に入れようとするとエラーが発生します。 –

関連する問題