2010-04-01 63 views
136

錯誤Java:如何初始化String []?

% javac StringTest.java 
StringTest.java:4: variable errorSoon might not have been initialized 
     errorSoon[0] = "Error, why?"; 

代碼

public class StringTest { 
     public static void main(String[] args) { 
       String[] errorSoon; 
       errorSoon[0] = "Error, why?"; 
     } 
} 

回答

229

您需要initializeerrorSoon,該錯誤消息指示,你只有declared它。

String[] errorSoon;     // <--declared statement 
String[] errorSoon = new String[100]; // <--initialized statement 

需要初始化數組,因此它可以爲String元素,然後才能開始設置指標分配正確的存儲器。

如果你只聲明數組(像你一樣)沒有分配給String元素內存,但只是一個參考手柄errorSoon,當你試圖在任何索引初始化變量會拋出一個錯誤。

作爲一個側面說明,你也可以初始化String陣列內部括號,{ }因爲如此,

String[] errorSoon = {"Hello", "World"}; 

這相當於

String[] errorSoon = new String[2]; 
errorSoon[0] = "Hello"; 
errorSoon[1] = "World"; 
+3

這是你不能使用貝蒂()來實例化每一個字符串你的數組有一個默認值。一個包含5個空字符串的數組應該是= new Array [5](「」);而不是= {「」,「」,「」,「」,「」}。 – 2015-04-15 11:19:57

+0

使用for循環。 – 2016-09-27 08:59:20

6
String[] errorSoon = new String[n]; 

,N是多少字符串它需要保持。

您可以在聲明中做到這一點,或者稍後在沒有String []的情況下做到這一點,只要在嘗試使用它們之前。

23
String[] errorSoon = { "foo", "bar" }; 

- 或 -

String[] errorSoon = new String[2]; 
errorSoon[0] = "foo"; 
errorSoon[1] = "bar"; 
104
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"}; 
+2

也許不是OP的問題標題建議的確切內容,但我試圖將我的字符串傳遞給接受String []的參數,這是解決方案 – kommradHomer 2014-03-31 13:09:39

+0

難道你不能忽略新的String btw嗎? String [] output = {「」,「」,「」};似乎在我的代碼中工作。 – 2015-04-15 11:20:49

+2

如果你已經初始化你的數組,並且你想重新初始化它,那麼你不能'args = {「new」,「array」};' 你必須'args = new String [] {「新「,」數組「};' – Darpan 2015-05-08 06:16:39

1

你總是可以寫這樣的

String[] errorSoon = {"Hello","World"}; 

For (int x=0;x<errorSoon.length;x++) // in this way u create a for  loop that would like display the elements which are inside the array  errorSoon.oh errorSoon.length is the same as errorSoon<2 

{ 
    System.out.println(" "+errorSoon[x]); // this will output those two  words, at the top hello and world at the bottom of hello. 
} 
9

我相信你只是在C++遷移,在Java中,你必須初始化一個數據類型(除了原始類型和字符串不被視爲java中的原始類型)以根據其規範使用它們如果你不那麼它就像一個空的引用變量(很像C++上下文中的指針)。

public class StringTest { 
    public static void main(String[] args) { 
     String[] errorSoon = new String[100]; 
     errorSoon[0] = "Error, why?"; 
     //another approach would be direct initialization 
     String[] errorsoon = {"Error , why?"}; 
    } 
} 
0

字符串宣言:

String str; 

字符串初始化

String[] str=new String[3];//if we give string[2] will get Exception insted 
str[0]="Tej"; 
str[1]="Good"; 
str[2]="Girl"; 

String str="SSN"; 

我們可以在字符串獲取個性:

char chr=str.charAt(0);`//output will be S` 

如果我想獲得個性ASCII值是這樣的:

System.out.println((int)chr); //output:83 

現在我想ASCII值轉換成性格特徵/符號。

int n=(int)chr; 
System.out.println((char)n);//output:S 
0
String[] string=new String[60]; 
System.out.println(string.length); 

它是初始化和獲取字符串長度的代碼非常簡單的方法,適合初學者

2

的Java 8,我們還可以使用流如

String[] strings = Stream.of("First", "Second", "Third").toArray(String[]::new); 

在情況下,我們已經有一個字符串(stringList)的名單,然後我們就可以收集到字符串數組爲:

String[] strings = stringList.stream().toArray(String[]::new);