我想要做的是建立一個名爲nameWithYear字符串等於是電影[0] +「(」 +電影[1] +「)」(所以「電影標題(年)「)從文本解析CSV。數組越界時設置一個字符串值
每當我嘗試,我遇到,我不斷得到一個數組越界錯誤的問題。我試圖設置字符串等於只有電影[0],它與成功。當我嘗試將它自己設置爲電影[1]時,它失敗。我可以做一個包含元素[1]的System.out,並且它的輸出很好,沒有問題。換句話說,出於某種原因,我只能在字符串中包含元素[0]而不是元素[1]。所以我假設它與聲明字符串的值有關。只是不知道是什麼。
的代碼如下:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class CSVParsing {
public String parseCSV() {
String csvFile = "C:\\Users\\RAY\\Desktop\\movies.csv";
BufferedReader br = null;
String nameWithYear = new String();
String line = "";
String csvSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
if (line.charAt(0) == '"')
{
csvSplitBy = "\",";
}
else
{
csvSplitBy = ",";
}
String[] movies = line.split(csvSplitBy);
nameWithYear = ""+ movies[0]+" ("+movies[1]+")";
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return nameWithYear;
}
public static void main (String[] args)
{
CSVParsing obj = new CSVParsing();
String testString = obj.parseCSV();
}
}
請注意,這不是100%完成,我在一小塊一小塊進行測試以確保它做的一切,我想要它做的。
更新:發現這是有關空白一年條目爲CSV的一部分。我該如何處理?一旦發現年份條目爲空白,程序就會中斷。
更新2:我用自己的研究解決了它。我在split()後將結果放入一個ArrayList中。這樣,我可以通過用另一個值替換它們來處理年份列中的空白條目。
插入'的System.out.println(Arrays.toString(電影));'行'nameWithYear = 「之前」 +電影[0] + 「( 」+電影[1] +「)」;'和看如果你運行你的程序,他打印什麼。帶有條目的數組的輸出如下所示:'[array with,two entries]'。 – Tom 2014-11-14 23:13:20
在調試器下運行它並檢查你的'電影'數組的值。 – 2014-11-14 23:15:59