如何将 scan.nextLine() 的输出传递到另一个扫描仪中

How to pass the output of scan.nextLine() into another scanner

提问人:snowman 提问时间:11/3/2023 更新时间:11/4/2023 访问量:38

问:

我正在做一个项目,我需要一次扫描一行,并将其传递到另一种进行更多扫描的方法中。目前我有

public static void inputStats(Scanner scan)throws FileNotFoundException {
    while (scan.hasNextLine()) {
    String text = scan.nextLine();
    printDuplicates(text);// my other method
    }
    }

目前java告诉我:字符串无法转换为Scanner 我的另一个方法只是传入一个扫描仪,它的开始是: printDuplicates(扫描仪扫描){ 我不确定如何传递正确的东西,或者强迫它。

对我来说,另一种解决方案是将 scanner.next stop 放在一行的末尾。

我尝试通过创建一个新的扫描仪并将其传入而不是字符串来传递扫描仪。 我试过用()强制输入。 我已经尝试了两次不使用扫描仪的所有方法。

java.util.scanner

评论

0赞 Sweeper 11/3/2023
printDuplicates(new Scanner(text));也许?扫描仪有什么作用?为什么不取而代之呢?printDuplicatesString
0赞 snowman 11/3/2023
@Sweeper 谢谢,它奏效了,为愚蠢的帖子道歉。

答:

1赞 Sweeper 11/3/2023 #1

只需将字符串传递给接受字符串的构造函数,即可创建扫描 a 的构造函数。ScannerString

printDuplicates(new Scanner(text));

如果需要扫描令牌,还可以考虑直接获取 ,并在其中创建扫描器。printDuplicatesStringprintDuplicates

void printDuplicates(String text) {
    Scanner scan = new Scanner(text);
    // ...
}
0赞 Reilas 11/4/2023 #2

"...目前java告诉我:字符串无法转换为Scanner......”

这是因为 printDuplicates 参数是 Scanner 对象。

"...我尝试通过创建一个新的扫描仪并将其传入而不是字符串来传递扫描仪......”

这是正确的,再试一次。

"...它的开头是:printDuplicates(Scanner scan){ 我不确定如何传递正确的东西,或者强制它。

两者都可以,只需调整printDuplicates代码即可。

void printDuplicates(Scanner scan) {
    
    scan.close();
}
void printDuplicates(String text) {
    try (Scanner s = new Scanner(text)) {
        
    }
}