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

时间:2012-11-28 16:30:47

标签: java syntax

此代码:

@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?????

在迭代器声明之后和最后一个卷曲的brakcet上给我一个语法错误:

Syntax error, insert "}" to complete ClassBody

但是当我这样做时,没有任何改变......

请帮忙!

5 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:4)

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

要添加的内容,您只能在类体内编写方法/构造函数/初始化块/变量声明。

答案 3 :(得分:4)

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

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

答案 4 :(得分:1)

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