Java 为什么这个while循环会给我一个语法错误?

Java 为什么这个while循环会给我一个语法错误?,java,syntax,Java,Syntax,此代码: @Service public class IvsImport { private Logger logger = Logger.getLogger(IvsImport.class); @Autowired FileReader fileReader; @Autowired ValueProcessorProvider provider; CSVEntryParser<IvsBerichtPojo> entryPar

此代码:

@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?????
但当我这么做的时候,一切都没有改变


请帮忙

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


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

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

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


此外,您只能在类主体内编写方法/构造函数/初始化块/变量声明。

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

public void logDetails(){
    Iterator<IvsBerichtPojo> it = ivsBerichtReader.iterator();
    while(it.hasNext()) {
        IvsBerichtPojo bericht = it.next();
        logger.info(bericht.getScheepsNummer()); 
    }
}
public void logDetails(){
迭代器it=IVSBerichReader.Iterator();
while(it.hasNext()){
IvsBerichtPojo bericht=it.next();
logger.info(bericht.getscheepsnumer());
}
}

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

你打算什么时候运行那段代码?是的,对不起,漫长的一天。。。。
public void logDetails(){
    Iterator<IvsBerichtPojo> it = ivsBerichtReader.iterator();
    while(it.hasNext()) {
        IvsBerichtPojo bericht = it.next();
        logger.info(bericht.getScheepsNummer()); 
    }
}