2013-05-20 96 views
-1

我想要做的是初始化字符串數組,然後填充每個空間使用不同的字符串,像這樣:在Java中,我如何初始化一個字符串數組?

 int year = 1995; //the current year i'm working with 

     String[] Year; //Initialize the year string 
     String j; 


     for(int i=(year-50); i < year; i++) 
     { 
      j = Integer.toString(i); //Converts the integer to a string 
      Year[i] = j; //EXCEPTION OCCURS HERE WHEN I SET 'String[] Year' 
         //equal to 'null' 

     } 

的問題是,因爲我碰到下面的錯誤,我不能初始化字符串: '局部變量Year可能未被初始化'

如果我設置了String[] Year = null,那麼我可以初始化字符串。但是,如果我這樣做,一個異常試圖運行&編譯代碼時拋出:java.lang.NullPointerException

我知道,我的代碼可以更短,但我試圖找出問題...

+1

如何使用Google搜索? – BobTheBuilder

回答

1

使用驗證碼:

String[] Year = new String[50]; //Initialize the year string 

現在的Java知道你想要多久的陣列是,所以它可以初始化。

如果你不告訴Java你想要你的數組有多久,它不能創建數組,因爲它不知道數組應該是多長時間。

另外,如果您想輕鬆調整,則可以使用final變量SIZE

此外,您不需要字符串j,因爲您只是在將其添加到數組之前使用它來存儲某些內容的結果。

這不會影響您的代碼,但正確的Java命名約定是變量應該以小寫字母開頭,因此請將Year更改爲years

因此,您的代碼可以這樣加以改進:

int year = 1995; //the current year i'm working with 
    final int SIZE = 50; //how big 

    String[] years = new String[SIZE]; //Initialize the year string 

    for(int i=(year-SIZE); i < year; i++) //Note the use of the SIZE variable 
    { 
     years[i] = Integer.toString(i); 
    } 
+0

這是未經測試的,會失敗。儘管'years.length'只有'50',代碼試圖寫入'years [1945]'。 – Alderath

0

你需要做新的陣列上與所需的大小

String[] Year = new String[desired size]; 

沒有這樣做,也沒有在創建的數組記憶,因此你擊中了例外。

0

您還沒有初始化Year

String[] years = new String[SIZE]; 

String[] years; 
years = new String[SIZE]; 

String[] years = {"Hello","World","Again"}; 

此外,使用正確的Java命名約定。

1

ü沒;噸用來初始化年Varible,也沒有年度陣列內的項目

String[] Year = new String[50]; // Initlaize adn add Some content 
0

String[] Year;只聲明瞭名一年數組引用你需要聲明與之前所需要的長度數組使用它,所以你必須使它作爲

String[] years = new String[size]; 

其中'大小'是您要定義的數組的長度。另外String[] year=null只會創建一個指向null的引用,這就是爲什麼你會得到NullPointerException。