1

テキストファイルから読み取るスキャナーがあります。ファイル内の特定の行に到達したら、現在の状態でスキャナーをパラメーターとして使用するメソッドを呼び出せるようにしたいと考えています。正確にそれがどのラインにあるか。

public static void createEntry(File list, int mediaTypeNum, String mediaType) throws FileNotFoundException {
    Scanner mediaReader = new Scanner(list);
    int occurrence = mediaTypeNum;
    int scannerCounter = 0;
    String match;
    String title = "";
    String director = "";
    while (mediaReader.hasNext() && scannerCounter < occurrence) {
        match = mediaReader.nextLine();
        if (match.equalsIgnoreCase(mediaType)) {
            scannerCounter++;
            if (scannerCounter == occurrence) {
                // based on type, create the media object
                // createMediaObject(list, mediaReader, mediaType)
                title = mediaReader.nextLine();
                director = mediaReader.nextLine();
            }
        }
    }

createMediaObject() には switch ケースがあり、ケースに基づいて、スキャナは空白行ができるまで次の行を読み取ります。メディアの種類ごとに行数が異なります。

前もって感謝します!

4

2 に答える 2

6

もちろん、これは Java のどのオブジェクトにも当てはまります。どの時点でも、オブジェクトの暗黙的なコピーは作成されません。*

注意しScannerなければならないのは、「シーケンシャル」な状態であり、何度も渡すと、どの状態にあるかを見失いやすいことです。特に、実行パスが異なる条件付き処理が実行される場合は、別の位置に置いてしまう可能性があります。

Scannerこれに対する適切なアプローチは、メソッド Javadoc で、 がどのような状態になると予想され、最後にどのような状態になるかを常に文書化することです。

*このステートメントには大きな注意点があります: マルチスレッドです。しかし、ここで詳細に議論することは非常に話題から外れます.

于 2013-01-18T22:20:14.063 に答える
2

もちろん。参照を Scanner オブジェクトに渡すと、受信者は同じインスタンスと同じ状態を確認できます。

于 2013-01-18T22:20:24.243 に答える