[英]Why is my array (5 elements) changing size dynamically?
我已經聲明了一個String
數組。
String[] csvColumns = new String[5];
但是,從CSV
文件讀取時:
String[] csvColumns = new String[5]; // Explicitly including this declaration again in case Stack Overflow users need to see the scope of the variable.
String row; // Will receive each column of 1 line at a time of the CSV file.
while ((row = inFile.readLine()) != null) // BufferedReader used to parse CSV File.
{
csvColumns = row.split(","); // Each element of the array will recieve the value of each column.
// Initialise class attributes with each column.
}
如果CSV
文件行中的一列不包含任何值(在我的文件中,最后一列只能是這種情況,因為該列不是必需的並且包含有關特定問題的注釋),則csvColumns
會減少它的大小乘以1。如果使用數組,我看不到這是怎么可能的-但話又說回來,我是一個新手程序員。
為什么會發生這種情況?
編輯*由於這兩個答案,非常有幫助。 應該檢查了split
方法的返回類型! (謝謝@chrylis)。
首先, csvColumns
不是靜態的(它似乎是一個局部變量),其次,它是一個變量 ,而不是數組。 您正在將值(數組引用)重新分配為對split
返回的新數組的引用。 (您創建並從未使用過的舊String[5]
現在沒有指向它的東西,將被垃圾回收。)
數組不會改變其大小。 您只需通過此行創建一個新數組
csvColumns = row.split(",")
並將其分配給csvColumns
變量。
而且舊的new String[5]
數組將被垃圾回收,因為它不再被任何變量引用。
你可以改變
String[] csvColumns = new String[5];
至
String[] csvColumns = null;
而且您的代碼仍然可以使用,因為您從未使用過創建的數組。 您只使用variable 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.