Java OpenCSV新手:如何从特定单元格获取内容

Java OpenCSV新手:如何从特定单元格获取内容,java,csv,opencsv,Java,Csv,Opencsv,我试图获取特定标题下的内容,并将其转换为字符串。我希望我的代码能够识别一个标题,并在标题下获取内容。基本上是在特定的单元格中获取信息。我做错了什么?我知道如何通过调用特定列来实现这一点,但现在我想知道如何通过使代码识别特定的头来实现这一点 编辑:我更新了我的代码,但仍然没有更改。。。帮忙 ImageAnnotation PeserAnnotation1 = new ImageAnnotation (); String csvFilename = "C:/Users/Daniela/Doc

我试图获取特定标题下的内容,并将其转换为字符串。我希望我的代码能够识别一个标题,并在标题下获取内容。基本上是在特定的单元格中获取信息。我做错了什么?我知道如何通过调用特定列来实现这一点,但现在我想知道如何通过使代码识别特定的头来实现这一点

编辑:我更新了我的代码,但仍然没有更改。。。帮忙

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("");
            }
    }
ImageAnnotation peseranotation1=新的ImageAnnotation();
字符串csvFilename=“C:/Users/Daniela/Documents/ISPY/205_4493_MR1_ACRIN_6657/E25008/peser_data.csv”//插入文件名和位置
CSVReader CSVReader=new CSVReader(new FileReader(csvFilename));
字符串[]headerLine=csvReader.readNext();
//启动imageannotation信息
对于(int i=0;i
CSV文件:

主ID、ISPY ID、日期、PE\U FTV
205120720050819,8.7508545

我的代码和CSV文件都只是真实的示例。
目前,代码只是跳过“if”而直接转到“else”

您正在使用
==
来比较字符串。改用
equals()
<代码>=
测试两个表达式是否引用完全相同的对象。如果两个字符串包含相同的字符,则不会出现这种情况。

您的代码实际上位于
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");
            }
    }

为了解决这个问题,我在
if
语句之后插入了一个
break
。没有它,代码将再次进入循环,输入
else
子句,并用
else
中的内容替换
if
语句中的字符串

不要在for循环中创建一个新的CsvReader,重新使用已经打开的CsvReader,您可以从中获得标题行……我这样做最初是为了跳过第一行的标题,这样代码就可以获取下面几行中的内容。我删除了循环中的Csvreader,但结果似乎没有什么不同……然后你还有其他bug。在评论和我的答案中建议的更改之后,编辑您的问题并粘贴更新的代码。显示示例输入、您想要的输出和您得到的输出。
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