2013-03-26 183 views
0

填充陣列我寫一個代碼和下面的消息不斷彈出:從另一個陣列

Exception in thread "main" java.lang.NullPointerException 
    at age.TokenizeNumbers.setYears(TokenizeNumbers.java:30) 
    at age.AgeNo.main(AgeNo.java:18) 

第一個在線30是給了我一個困難時期。我試圖用array2 [](日期)的內容填充array1 [](年),而我只想要存儲在array2 []中的數字的前兩位數字。 ()循環中有一些錯誤。只要我寫 年=日期它返回array1 [](年)就好了。儘快嘗試循環,我得到一個錯誤。 這是代碼。感謝 尤拉伊

package age; 

import java.io.IOException; 

public class TokenizeNumbers { 
     int lines; 
     long[] dates; 
     long[] years; 
     long[] dateNum; 
     long[] convertedYears; 
     long annum = 100000000; 

    public TokenizeNumbers() throws IOException{ 
     String[] dates; 
     String[] years; 

     Vek v = new Vek("C:\\Users\\Juraj\\workspace\\Mackin\\src\\age\\rc.txt"); 
     lines = v.readLines(); 
     long[] dateNum = v.openFile(); 

    } 

    public long[] getDateArray(long[] dateNum){ 
     dates = dateNum; 
     return dates; 
    } 

    public long[] setYears(){ 
     for(int k = 0; k<dates.length; k++){  
     years[k]=dates[k]/annum; 
     } 
     return years; 
    } 


    public void printYears(){ 
     int y; 

     for(y=0; y<lines; y++){ 
      System.out.println(years[y]); 

     } 
     System.out.println(); 
    } 
} 
+0

無處用「新」的關鍵字來初始化它們在你的代碼它顯示正在初始化你的'years'陣列。你的代碼還有其他許多問題。 – Perception 2013-03-26 17:15:36

回答

0

在此行中:

years[k] = dates[k]/annum; 

你正試圖將值分配給years[k]years中提供的代碼未初始化。你可以做

long[] years = new long[SIZE]; 

同樣適用於dateNum

你也有String陣列datesyears在你的TokenizeNumbers的構造函數中雖然沒有被使用可能會導致混淆。

看看Arrays#copyOf複製數組。

+0

謝謝,這樣一個明顯的錯誤... – user2212537 2013-03-26 20:07:31

0

我認爲這個問題是在你的代碼dates.length

public long[] setYears(){ 
    for(int k = 0; k<dates.length; k++){  
     years[k]=dates[k]/annum; 
    } 
    return years; 
} 

您必須使用dates.length設置(初始化)之前。所以當你執行dates.length時,它說NPE,所以在使用之前請確保你初始化了dates

+0

謝謝,初始化是問題。 – user2212537 2013-03-26 20:09:10

0

日期[]和年份[]

不會被初始化,您需要