2015-05-28 16 views
1

Java在讀取文本文件時返回字符串值,但它只會返回「0」作爲整數值,「0.0」作爲我的雙精度值返回。讀取文本文件時,Java不返回值

Cars car[] = new Cars[5]; 
    int cnt = 0; 
    String line = inF.readLine(); 

    while(line != null){ 
    String[] field = line.split("\\s+"); 

    int yrData = Integer.parseInt(field[2]); 
    double disData = Double.parseDouble(field[3]); 

    car[cnt] = new Cars(field[0], field[1], yrData, disData); 
    cnt++; 
    line = inF.readLine(); 
    } 

    for(int i=0; i<cnt; i++){ 
    System.out.println(i+1 +": "+ car[i]); 
    } 

例子: 的Java返回什麼---> 1:名稱:歐寶型號:雅特年份:0詳細顯示:0.0

什麼是在文本文件中:歐寶雅特1997年2.8

這是我的構造函數:

Cars(String dataForName, String dataForModel, int dataForYear, double dataForDisp){name = dataForName; model = dataForModel; int year = dataForYear; double disp = dataForDisp;} 

這是我的toString方法:

public String toString(){String s = "Name: "+name+" Model: "+model+" Year: "+year+" Disp: "+disp; return s;} 

文本的分隔符是空格。

+2

你能爲你的構造函數包含代碼嗎?這應該工作。 –

+0

以及'toString'方法。 – RealSkeptic

+0

什麼是文本的分隔符?是空格(或)TAB(\ t)? – K139

回答

3

的問題是在構造函數:

Cars(String dataForName, String dataForModel, int dataForYear, double dataForDisp){ 
    name = dataForName; 
    model = dataForModel; 
    int year = dataForYear; 
    double disp = dataForDisp; 
} 

聲明瞭一個新變量yeardisp在構造函數中,而不是在你的類中設置的字段。因此,這些值從未設置,因此它們分別使用00.0的默認值。

將其更改爲

Cars(String dataForName, String dataForModel, int dataForYear, double dataForDisp){ 
    name = dataForName; 
    model = dataForModel; 
    year = dataForYear; 
    disp = dataForDisp; 
} 

應該工作。

+0

哦,好吧,非常感謝...現在可以工作 – tuxi