2012-11-28 72 views
-2

此代码:为什么while循环给我一个语法错误?

@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 

但是当我做到这一点,没有什么变化....

请帮忙!

+2

你打算什么时候运行那段代码? – nhahtdh

+0

对不起,漫长的一天.... – jorrebor

回答

4

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

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

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

把你的while循环放入任何方法中,看看它是否被编译。

4

因为你的while循环不存在任何其他方法。你必须把它变成一种方法。

4

你不能在方法/构造函数外写这样的代码。您只能在该级别声明变量。将代码放入方法体内的while循环中,编译器错误将消失。

更多添加,你只能在类体内编写方法/构造函数/初始化块/变量声明。

1

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