-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 に答える