-2

这段代码:

@Service
public class IvsImport {

    private Logger logger = Logger.getLogger(IvsImport.class);

    @Autowired
    FileReader fileReader;

    @Autowired
    ValueProcessorProvider provider; 

    CSVEntryParser<IvsBerichtPojo> entryParser = new AnnotationEntryParser<IvsBerichtPojo>(IvsBerichtPojo.class, provider);
    CSVReader<IvsBerichtPojo> ivsBerichtReader = new CSVReaderBuilder<IvsBerichtPojo>(fileReader).entryParser(entryParser).build();

    public IvsImport(){}

    public FileReader getFileReader() {
        return fileReader;
    }

    public void setFileReader(FileReader fileReader) {
        this.fileReader = fileReader;
    }

    Iterator<IvsBerichtPojo> it = ivsBerichtReader.iterator(); //this } is not OK????
    while(it.hasNext()) {
            IvsBerichtPojo bericht = it.next();
            logger.info(bericht.getScheepsNummer()); 
    }
} //and here?????

在迭代器声明之后和最后一个大括号处给我一个语法错误:

Syntax error, insert "}" to complete ClassBody

但是当我这样做时,什么都没有改变....

请帮忙!

4

5 回答 5

10

您不能在方法之外编写代码。您需要编写可执行代码的方法。

将您的 while 循环放入任何方法中,然后查看它是否已编译。

于 2012-11-28T16:32:03.670 回答
4

因为您的 while 循环存在于任何其他方法之外。您必须将其放入方法中。

于 2012-11-28T16:32:42.373 回答
4

您不能在方法/构造函数之外编写此类代码。您只能在该级别声明变量。将带有 while 循环的代码放在方法主体中,您的编译器错误就会消失。

更多要补充的是,您只能在类体内编写方法/构造函数/初始化块/变量声明。

于 2012-11-28T16:33:06.803 回答
4

您直接在类体中编写代码,这是不正确的。相反,您的代码应该是某个方法的一部分。

public void logDetails(){
    Iterator<IvsBerichtPojo> it = ivsBerichtReader.iterator();
    while(it.hasNext()) {
        IvsBerichtPojo bericht = it.next();
        logger.info(bericht.getScheepsNummer()); 
    }
}
于 2012-11-28T16:33:58.753 回答
1

在方法中编写代码,因为执行该代码需要方法。因此,将您的 while 循环放在任何方法中。谢谢!!

于 2012-11-28T17:57:49.243 回答