gpt4 book ai didi

java - 如果将扫描器作为参数传递,它的状态是否也会传递?

转载 作者:行者123 更新时间:2023-11-29 10:17:13 27 4
gpt4 key购买 nike

我有一个从文本文件读取的扫描仪。当它到达文件中的某一行时,我希望能够调用一个方法,该方法在其当前状态下使用扫描仪作为参数 - 例如,我希望在以下位置传递扫描仪(连同使用的文件)它到底在哪一行。

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 case,并且基于 case,Scanner 将读取一些后续行,直到出现空白行。对于每种媒体类型,行数不同。

提前致谢!

最佳答案

当然,事实上对于Java中的任何对象都是如此。在任何时候都不会创建对象的隐式副本。*

您必须注意的是 Scanner 有一个“顺序”状态,如果您经常传递它,很容易忘记它所处的状态。特别是如果执行条件处理,不同的执行路径可能最终将其留在不同的位置。

解决此问题的一个好方法是始终在方法 Javadoc 中记录 Scanner 预期处于什么状态以及它最后保留的状态。

*该声明有一个很大的警告:多线程。但在这里详细讨论这个话题是非常离题的。

关于java - 如果将扫描器作为参数传递,它的状态是否也会传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com