2012-11-28 111 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循環放在任何方法中。 謝謝!