2011-02-01 78 views
25

我遇到以下問題,其中carString數組,它尚未初始化/沒有元素。如何查找字符串數組的長度?

String car []; 
System.out.println(car.length); 

什麼是可能的解決方案?

+0

解決方案可能取決於您的問題。謹慎地告訴我們它是什麼? – jarnbjo 2011-02-01 13:34:06

回答

49

由於car尚未初始化,因此它沒有長度,其值爲null。然而,編譯器甚至不會允許你編譯的代碼,如,拋出以下錯誤:變量車可能未被初始化

你需要先初始化它,然後你可以使用.length

String car[] = new String[] { "BMW", "Bentley" }; 
System.out.println(car.length); 

如果你需要初始化一個空數組,你可以使用以下命令:

String car[] = new String[] { }; // or simply String car[] = { }; 
System.out.println(car.length); 

如果您需要以特定大小初始化它以填充某些位置,您可以使用以下內容:

String car[] = new String[3]; // initialize a String[] with length 3 
System.out.println(car.length); // 3 
car[0] = "BMW"; 
System.out.println(car.length); // 3 

不過,我建議您使用List相反,如果你打算將元素添加到它:

List<String> cars = new ArrayList<String>(); 
System.out.println(cars.size()); // 0 
cars.add("BMW"); 
System.out.println(cars.size()); // 1 
+1

+1用於提示列表,它幾乎總是比數組更適合的*接口*。 – 2011-02-01 12:57:17

+2

您的第一條陳述「由於汽車尚未初始化,所以沒有長度,其值爲空」是錯誤的。由於汽車還沒有初始化,代碼甚至不會編譯。引用可能未初始化的變量是編譯時錯誤。 – jarnbjo 2011-02-01 13:33:02

+0

你說得對,'javac`確實會拋出這個錯誤。我已經編輯了我的答案來解決這個問題。 – 2011-02-01 14:35:33

4

那麼,在這種情況下,car變量會null,所以取消引用它(如你做當你訪問car.length時)會拋出一個NullPointerException

事實上,你不能訪問變量的所有,直到肯定給它賦值 - 否則編譯器會抱怨「變量車可能沒有被初始化」。

你在這裏試圖做什麼(我不清楚你到底在找什麼「解決方案」)?

2
String car []; 

是對String-s數組的引用。你看不到一個長度,因爲那裏沒有數組!

0

我認爲你正在尋找這個

String[] car = new String[10]; 
int size = car.length; 
2

這是行不通的。你首先必須初始化數組。到目前爲止,您只有一個String []引用,指向null

當您嘗試讀取長度成員時,您實際上做的是null.length,這會導致NullPointerException。

1

由於您尚未初始化car,所以它在JVM(Java虛擬機)中不存在,因此您必須首先對其進行初始化。

例如:

car = new String{"Porsche","Lamborghini"}; 

現在,你的代碼將運行良好。

輸入:

String car []; 
car = new String{"Porsche","Lamborghini"}; 
System.out.println(car.length); 

OUTPUT:

1

上述所有的答案都建議它會拋出一個NullPointerException。

請用某些值初始化它,然後才能正確使用length屬性。例如:

String[] str = { "plastic", "paper", "use", "throw" }; 
System.out.println("Length is:::" + str.length); 

現在定義了數組'str',所以它的長度也有一個定義的值。

0

在Java中,我們聲明數組(如汽車)的字符串作爲

String []car; 
String car[]; 

我們使用new運算符創建數組,並指定其類型: -

String []car=new String[]; 
String car[]=new String[]; 

該分配參考,到一串字符串,到汽車。 您也可以通過初始化它創建數組: -

String []car={"Sedan","SUV","Hatchback","Convertible"}; 

因爲我們還沒有初始化數組,你要訪問它,一個NullPointerException異常被拋出。