2013-08-18 43 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 
相关问题