2013-08-18 93 views
0

我試圖獲取特定頁眉下的任何內容並將其轉換爲字符串。我希望我的代碼能夠識別標題並在其下面獲取內容。基本上在特定的單元格中獲取信息。我究竟做錯了什麼?我知道如何通過調用特定的列來實現這一點,但現在我想知道如何通過使代碼識別特定的標題來實現。OpenCSV新手:如何從特定單元格獲取內容

編輯:我更新了我的代碼,但仍然沒有改變...幫助?

ImageAnnotation PeserAnnotation1 = new ImageAnnotation(); 
    String csvFilename = "C:/Users/Daniela/Documents/ISPY/205_4493_MR1_ACRIN_6657/E25008/peser_data.csv"; //Insert file name and location 
    CSVReader csvReader = new CSVReader(new FileReader(csvFilename)); 
    String [] headerLine = csvReader.readNext(); 

    //start imageannotation info 
    for (int i = 0; i < headerLine.length; i++){ 
      if (headerLine[i].equals("PRIMARY_ID")) //customize name 
      { 
       CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1); 
       String [] nextLine = csvreader.readNext(); 
       PeserAnnotation1.setPRIMARY_ID(nextLine[i]); 
      } 
      else 
      { 
       PeserAnnotation1.setPRIMARY_ID(""); 
      } 
    } 
    for (int i = 0; i < headerLine.length; i++){  
      if (headerLine[i].equals("ISPY_ID")) //customize name 
      { 
       CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1); 
       String [] nextLine = csvreader.readNext(); 
       PeserAnnotation1.setISPY_ID(nextLine[i]); 
      } 
     else 
      { 
       PeserAnnotation1.setISPY_ID(""); 
      } 
    } 

CSV文件:

PRIMARY_ID,ISPY_ID,DATE,PE_FTV
205,1207,20050819,8.7508545

我的兩個代碼和CSV文件只是樣品真實的東西。 目前代碼只是跳過「if」並直接轉到「else」。

+0

不要在for循環中創建一個新的CsvReader,請重新使用已經打開的csvReader,從而獲得標題行... – Dru

+0

我原本是這樣做的,它跳過第一行的標題,以便代碼可以抓取任何在下面的行中。我刪除了循環中的Csvreader,但是結果似乎沒有什麼區別...... – user2499705

回答

0

要解決這個問題,我的if語句後插入一個break。沒有它,代碼會再次進入循環,輸入else子句,並將if語句中的字符串替換爲else中的內容。

0

您正在使用==來比較字符串。改爲使用equals()==測試兩個表達式是否引用完全相同的對象。如果兩個字符串包含相同的字符,則不會。

+0

我剛剛嘗試過,結果沒有變化...... – user2499705

+0

然後您還有其他錯誤。修改您的問題並粘貼更新的代碼,在評論和我的答案中提出的更改之後。顯示示例輸入,你想要的輸出以及你得到的輸出。 –

0

您的代碼實際上在if條件內。

for (int i = 0; i < headerLine.length; i++){ 
      if (headerLine[i].equals("PRIMARY_ID")) //customize name 
      { 
       System.out.println("inside PRIMARY_ID IF"); 
       CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1); 
       String [] nextLine = csvreader.readNext(); 

      } 
      else 
      { 
       System.out.println("inside PRIMARY_ID ELSE"); 
      } 
    } 
    for (int i = 0; i < headerLine.length; i++){  
      if (headerLine[i].equals("ISPY_ID")) //customize name 
      { 
       System.out.println("inside ISPY_ID IF"); 
       CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ',', '\'', 1); 
       String [] nextLine = csvreader.readNext(); 

      } 
     else 
      { 
      System.out.println("inside ISPY_ID ELSE"); 
      } 
    } 

給我下面的輸出

inside PRIMARY_ID IF 
inside PRIMARY_ID ELSE 
inside PRIMARY_ID ELSE 
inside PRIMARY_ID ELSE 
inside ISPY_ID ELSE 
inside ISPY_ID IF 
inside ISPY_ID ELSE 
inside ISPY_ID ELSE 
相關問題